Tôi đang sử dụng khung ảnh trên iOS8.1 và yêu cầu dữ liệu hình ảnh cho nội dung bằng cách sử dụng requestImageDataForAsset ... Hầu hết thời gian hoạt động và tôi nhận được dữ liệu hình ảnh và từ điển chứa những gì bạn xem bên dưới. Nhưng đôi khi cuộc gọi hoàn tất, nhưng dữ liệu là nil và từ điển chứa ba mục tìm kiếm chung.Ảnh Khung yêu cầuImageDataForAsset thỉnh thoảng không thành công
Các cuộc gọi được thực hiện tuần tự và trên cùng một chuỗi. Nó không phải là cụ thể cho bất kỳ hình ảnh cụ thể. Lỗi sẽ xảy ra trên các hình ảnh tôi đã mở thành công trong quá khứ. Có ai gặp phải điều này không?
+ (NSData *)retrieveAssetDataPhotosFramework:(NSURL *)urlMedia resolution:(CGFloat)resolution imageOrientation:(ALAssetOrientation*)imageOrientation {
__block NSData *iData = nil;
PHFetchResult *result = [PHAsset fetchAssetsWithALAssetURLs:@[urlMedia] options:nil];
PHAsset *asset = [result firstObject];
PHImageManager *imageManager = [PHImageManager defaultManager];
PHImageRequestOptions *options = [[PHImageRequestOptions alloc]init];
options.synchronous = YES;
options.version = PHImageRequestOptionsVersionCurrent;
@autoreleasepool {
[imageManager requestImageDataForAsset:asset options:options resultHandler:^(NSData *imageData, NSString *dataUTI, UIImageOrientation orientation, NSDictionary *info) {
iData = [imageData copy];
NSLog(@"requestImageDataForAsset returned info(%@)", info);
*imageOrientation = (ALAssetOrientation)orientation;
}];
}
assert(iData.length != 0);
return iData;
}
Đây là kết quả mong muốn mà tôi nhận được dữ liệu hình ảnh và từ điển dữ liệu meta:
requestImageDataForAsset returned info({
PHImageFileDataKey = <PLXPCShMemData: 0x1702214a0> bufferLength=1753088 dataLength=1749524;
PHImageFileOrientationKey = 1;
PHImageFileSandboxExtensionTokenKey = "6e14948c4d0019fbb4d14cc5e021199f724f0323;00000000;00000000;000000000000001a;com.apple.app-sandbox.read;00000001;01000003;000000000009da80;/private/var/mobile/Media/DCIM/107APPLE/IMG_7258.JPG";
PHImageFileURLKey = "file:///var/mobile/Media/DCIM/107APPLE/IMG_7258.JPG";
PHImageFileUTIKey = "public.jpeg";
PHImageResultDeliveredImageFormatKey = 9999;
PHImageResultIsDegradedKey = 0;
PHImageResultIsInCloudKey = 0;
PHImageResultIsPlaceholderKey = 0;
PHImageResultWantedImageFormatKey = 9999;
})
Đây là những gì tôi nhận được thường xuyên. dữ liệu hình ảnh là không. Từ điển không chứa quá nhiều.
requestImageDataForAsset returned info({
PHImageResultDeliveredImageFormatKey = 9999;
PHImageResultIsDegradedKey = 0;
PHImageResultWantedImageFormatKey = 9999;
})
Điều này cũng xảy ra với tôi, đối với hình ảnh trong luồng iCloud được chia sẻ. Chưa có giải pháp nào. – an0
Điều này dường như xảy ra thường xuyên (gần 100%) khi cố gắng sử dụng tùy chọn.synchronous = YES để tìm nạp hình ảnh cho nội dung trong luồng ảnh iCloud (a.k.a., Album được chia sẻ) chưa được tải xuống. Nếu hình ảnh đã được tải xuống và lưu vào bộ nhớ cache bởi ứng dụng Ảnh hoặc ứng dụng của tôi không đồng bộ, nó sẽ hoạt động tốt. Nếu không, tải xuống đồng bộ luôn không thành công. Tôi đã thử iOS 8.x, 9.0 và 9.1 với cùng kết quả. – LenK
Tôi cũng gặp sự cố này. Cách giải quyết của tôi là đặt tùy chọn.synchronous = NO –