iOS 8 の新しい写真フレームワークを使用して、デバイスで最後に撮影した写真のサムネイルを取得しようとしています。これを行うために現在持っているコードは次のとおりです。
PHFetchOptions *fetchOptions = [PHFetchOptions new];
fetchOptions.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"creationDate" ascending:NO]];
PHFetchResult *assetsInfo = [PHAsset fetchAssetsWithOptions:fetchOptions];
PHImageRequestOptions *requestOptions = [PHImageRequestOptions new];
requestOptions.version = PHImageRequestOptionsVersionCurrent;
requestOptions.deliveryMode = PHImageRequestOptionsDeliveryModeFastFormat;
[[PHImageManager defaultManager] requestImageForAsset:[assetsInfo objectAtIndex:1]
targetSize:CGSizeMake(100, 100)
contentMode:PHImageContentModeAspectFill
options:requestOptions
resultHandler:^(UIImage *result, NSDictionary *info) {
if (result) {
// galleryButton is just a UIButton in the view
[galleryButton setImage:result forState:UIControlStateNormal];
}
}];
このコードは、デバイスで最後に撮影された写真を取得できますが、デバイスで最後に撮影された写真が削除された場合、その事実は考慮されず、ボタンの画像は で削除された写真に設定されresultHandler
ます。これは、iOS 8 では、写真を削除すると、実際にデバイスから削除されるまでに 30 日かかり、何らかの理由でこれらの写真がPHFetchResult
s に含まれていることが原因であると思われます。
PHAsset
に含まれるオブジェクトで「削除済み」または類似の属性を探してみましたがassetsInfo
、どのような情報も見つかりませんでした。デバッガーで削除された写真のプリントアウトは次のようになります。
<PHAsset: 0x57462a0> 7689FC1C-9EE2-4FF7-9B37-4A032A3FDA01/L0/001 mediaType=1/0, assetSource=2, (1536x2048), creationDate=2014-09-22 06:45:10 +0000, location=1, hidden=0, favorite=0
の次のオブジェクトのプリントアウト (assetsInfo
私が確認した写真は削除されていません) は次のようになります。
<PHAsset: 0x57461a0> E48D1482-395B-405C-85F9-FFD04D9EBFBD/L0/001 mediaType=1/0, assetSource=3, (2448x3264), creationDate=2014-09-21 04:24:55 +0000, location=0, hidden=0, favorite=0
写真が削除されたかどうかを教えてくれる情報はないようです。おそらく属性が役立つと思いましhidden
たが、代わりに、写真が特定の Photos.app アルバム/コレクションに表示されるかどうかに関係しています。属性が役立つのではないかと思いましたassetSource
が、文書化されていないようで、さらに調査したところ、写真の削除ステータスとは関係がないようです。
PHAsset
オブジェクトが削除された写真を表しているかどうかを確認する方法はありますか? 「最近削除した」アルバムに含まれる写真を除外するために、取得しているアセットを絞り込む方法はありますか?