1

我之前问过一个类似的问题(没有回复),但我对这个问题了解得更多,所以我决定用一个新的来重新表述它。我希望这没问题。

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

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

有没有办法解决?是否有任何来自 ALAssets 的数据可以存储,例如照片 ID、路径或任何东西,这些数据将在 ALAssetLibrary 重新索引自身时“存活”下来?

谢谢!

4

1 回答 1

7

当 PhotoLibrary 发生变化时,所有 AssetLibrary 对象都会失效。你需要做什么:

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

2)在用户退出应用程序之前,使用以下方法保存您想要稍后检索的 ALAsset 的 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,传递您之前保存的值。

干杯,

亨德里克

于 2012-04-18T20:28:48.143 回答