我有一个应用程序,我可以在其中检索和显示来自 iDevice 的图像。我使用以下代码:
PHImageRequestOptions *options = [[PHImageRequestOptions alloc] init];
options.resizeMode = PHImageRequestOptionsResizeModeNone;
options.deliveryMode = PHImageRequestOptionsDeliveryModeHighQualityFormat;
options.networkAccessAllowed = YES;
PHCachingImageManager *manager = [[PHCachingImageManager alloc] init];
[manager requestImageForAsset:asset
targetSize:CGSizeMake(asset.pixelHeight, asset.pixelWidth)
contentMode:PHImageContentModeAspectFit
options:options
resultHandler:^(UIImage *result, NSDictionary *info) {
// Do something with the result
}];
我的问题是,当我尝试检索的图像不在用户设备上,而仅在 iCloud 上(设置 -> iCloud -> 照片 -> 优化 iPhone 存储)时,requestImageForAsset: 返回 nil 作为结果和以下 NSError:
NSError * domain: @"NSCocoaErrorDomain" - code: 18446744073709551615
PHCachingImageManager的文档说:
当您需要单个资产的图像时,调用 requestImageForAsset:targetSize:contentMode:options:resultHandler: 方法,并传递您在准备该资产时使用的相同参数。
如果您请求的图像在已经准备好的图像中,PHCachingImageManager 对象会立即返回该图像。否则,Photos 会按需准备图像并将其缓存以供以后使用。
所以理论上我的代码应该可以工作。有什么想法可能导致这种情况吗?