2015-08-09 58 views
2

我想知道如何複製PHAsset並保留照片的上下文。例如,如果照片位於特定相冊中,我希望重複位於原始照片旁邊的同一張相冊中。如果可能的話,編輯歷史將被保留,允許用戶在需要時將該複製恢復爲原始。如何複製PHAsset?

可以實現分享表並共享圖像,這將提供保存圖像的選項,但這不是真正的重複。保存圖像將其放在所有照片的末尾。如果我創建的新資產通過creationRequestForAssetFromImage從我現有的資源中提供圖片,那麼該圖片也會放置在所有照片的末尾。

如何以編程方式複製給定PHAsset,保留其在相冊層次結構中的位置?

+0

我不能完全確定你的要價,但PHAsset確實符合NSCopying如果你想要做的是使一個副本? – DBoyer

+0

@DBoyer這可能會有所幫助!一旦你有了複製的PHAsset,你如何將它保存到他們的照片庫呢? – Joey

回答

0

https://developer.apple.com/library/ios/documentation/Photos/Reference/PHAssetChangeRequest_Class/index.html#//apple_ref/doc/uid/TP40014384-CH1-SW8

要設置新創建的資產的元數據屬性,使用變更請求的 相應的屬性(在修改 資產列出)。要在稍後以相同更改 塊或在更改塊完成後引用新創建的資產,請使用 placeholderForCreatedAsset屬性檢索佔位符對象。

呼叫creationRequestForAssetFromImage然後使用PHAsset要複製設置在PHAssetChangeRequest適當的元數據。

let request = PHAssetChangeRequest.creationRequestForAssetFromImage(image) 
request.creationDate = copiedAsset.creationDate 
request.location = copiedAsset.location 
+1

糾正我,如果我錯了,但這隻會將照片保存到相機膠捲/所有照片。它不會位於原始資產所在的專輯中,對嗎?請注意,它甚至可能位於另一個文件夾內的文件夾中的相冊中,而且我確實需要將此副本保留在同一位置。 – Joey