1

これに似た以前の質問をしましたが (応答なし)、問題について詳しく知っているので、新しい質問で言い換えることにしました。これで問題ないことを願っています。

基本的に、ALAssets をアプリに保存する必要があります。具体的には、カメラ ロール/フォト ライブラリの写真です。

ユーザーがアプリを切り替えて、写真を撮ったり写真を削除したりすると、保存した ALAssets が無効になります。

これを回避する方法はありますか?写真 ID、パスなど、ALAssetLibrary の再インデックス自体を「存続」させることができる ALAssets からのデータはありますか?

ありがとうございました!

4

1 に答える 1

7

PhotoLibrary が変更されると、すべての AssetLibrary オブジェクトが無効になります。するべきこと:

1) ユーザーがアプリを切り替える前に、ALAssetsLibraryChangedNotification のオブザーバーを登録します。回避する必要がある iOS バグがあることに注意してください: http://www.openradar.me/10484334

2) ユーザーがアプリを切り替える前に、次のメソッドを使用して後で取得する ALAssets の URL を保存します。

[assetObject valueForPropery: ALAssetPropertyURLs];

3) ユーザーがアプリに戻ると (そして変更が行われると)、オブザーバーが呼び出されます。UI に ALAsset オブジェクトが表示される場合は、AssetsLibrary の再列挙をトリガーし、GUI を更新する必要があります (そうしないと、GUI が無効な ALAssetsObject に反映されます)。

4) 以前に URL を保存した ALAsset-Object を取得するには、次のメソッドを使用します。

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

assetURL には、前に保存した値を渡します。

乾杯、

ヘンドリック

于 2012-04-18T20:28:48.143 に答える