当从照片框架中请求图像时,我设法正确地获取了除最后 64 个之外的所有图像。在下面的代码中,最后一个总是为dataUTI
and返回 nil 。imageData
在试图弄清楚发生了什么的同时,我发现他们PHAsset
确切地知道 UTI 是什么,但向我报告它是零。
还有人看到这个吗?
您可以看到我已经让我的代码在它被报告为 nil 时访问资产的 UTI,以便我的应用程序可以确定它是否是 gif,但这不是一个可取的方法,而且我从来没有得到它imageData
,所以它不是大量的帮助!
PHFetchOptions* fetchOptions = [[PHFetchOptions alloc] init];
fetchOptions.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"creationDate" ascending:NO]];
PHFetchResult *allPhotosResult = [PHAsset fetchAssetsWithMediaType:PHAssetMediaTypeImage options: fetchOptions];
[allPhotosResult enumerateObjectsUsingBlock:^(PHAsset *asset, NSUInteger idx, BOOL *stop) {
PHImageRequestOptions* options = [[PHImageRequestOptions alloc] init];
options.synchronous = NO;
options.networkAccessAllowed = YES;
options.deliveryMode = PHImageRequestOptionsDeliveryModeHighQualityFormat;
[[PHImageManager defaultManager] requestImageDataForAsset: asset options: options resultHandler:^(NSData *imageData, NSString *dataUTI, UIImageOrientation orientation, NSDictionary *info) {
NSString* val = [asset valueForKey: @"uniformTypeIdentifier"];
if( !dataUTI )
{
dataUTI = val;
}
}];
}];
编辑:我忘了提到丢失的图像创建日期不是最新的图像,并且似乎分散了。实际上,根据它们的创建日期,即使是照片应用程序似乎也没有显示它们。但是,他们的位置似乎没有什么应该在他们的位置上查看他们的创建日期将放置它们的相邻图像。