我问了一个类似于此的早期问题(没有回复),但我对这个问题了解得更多,所以我决定用一个新问题重新措辞。我希望这没关系。
基本上,我需要在我的应用程序中存储一些ALAssets,特别是相机胶卷/照片库中的照片。
如果用户退出应用程序,然后拍摄一些照片或删除一些照片,那么我存储的ALAsset将无效。
这有什么办法吗?我可以存储ALAssets中的任何数据,例如照片ID,路径或其他任何数据,这些数据将在ALAssetLibrary重新编制索引后“存活”吗?
谢谢!
答案 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,传递您之前保存的值。
干杯,
亨德里克