有没有办法以尽管ALAssetLibrary有任何变化的方式保存ALAsset?

时间:2012-04-18 08:49:53

标签: iphone alassetslibrary

我问了一个类似于此的早期问题(没有回复),但我对这个问题了解得更多,所以我决定用一个新问题重新措辞。我希望这没关系。

基本上,我需要在我的应用程序中存储一些ALAssets,特别是相机胶卷/照片库中的照片。

如果用户退出应用程序,然后拍摄一些照片或删除一些照片,那么我存储的ALAsset将无效。

这有什么办法吗?我可以存储ALAssets中的任何数据,例如照片ID,路径或其他任何数据,这些数据将在ALAssetLibrary重新编制索引后“存活”吗?

谢谢!

1 个答案:

答案 0 :(得分:7)

当PhotoLibrary发生更改时,所有AssetLibrary对象都将变为无效。 你需要做什么:

1)在用户退出应用程序之前,注册ALAssetsLibraryChangedNotification的观察者。请注意,您需要解决一个iOS Bug:http://www.openradar.me/10484334

2)在用户退出应用程序之前,请使用以下方法保存您要稍后检索的ALAssets的URL:

[assetObject valueForPropery: ALAssetPropertyURLs];

3)当用户切换回你的应用程序(并完成更改)时,应该调用观察者。如果您的UI显示任何ALAsset对象,您应该触发AssetsLibrary的重新枚举并更新您的GUI(否则您的GUI会反映到无效的ALAssetsObjects)。

4)要检索您保存之前的URL的任何ALAsset-Objects,请使用以下方法:

[assetsLibraryInstance assetForURL:(NSURL *)assetURL resultBlock:(ALAssetsLibraryAssetForURLResultBlock)resultBlock failureBlock:(ALAssetsLibraryAccessFailureBlock)failureBlock] 

对于assetURL,传递您之前保存的值。

干杯,

亨德里克

相关问题