我試圖搶在iOS版8.我現在所擁有的做到這一點的代碼使用新的照片框架的設備上拍攝的最後一張照片的縮略圖如下:如何確定PHFetchResult中的PHAsset是否代表已刪除的照片?
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
中。
我試圖尋找包含在assetsInfo
中的PHAsset
對象上的「已刪除」或類似屬性,但找不到任何類型的信息。在調試器中刪除照片的打印輸出看起來是這樣的:
<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
對象是否代表已刪除的照片?有沒有辦法縮小我提取的資源以排除「最近刪除」相冊中包含的照片?
這似乎是蘋果的一部分的一個巨大的遺漏 – 2016-02-27 11:35:22