1

我有一个应用程序,我可以在其中检索和显示来自 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 会按需准备图像并将其缓存以供以后使用。

所以理论上我的代码应该可以工作。有什么想法可能导致这种情况吗?

4

0 回答 0