我正在尝试使用 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
对象是否代表已删除的照片?有没有办法缩小我要获取的资产以排除“最近删除”相册中包含的照片?