[iOS] [Generic] Creating an image format with an unknown type is an error

Objective-C
スポンサーリンク
スポンサーリンク

問題 PHAssetで写真を取得する時、写真を新しい順に取得しようとoptionを設定したら、 たまに(すべての写真ではない)下記のエラーが出て、resultHandlerのUIImageがnilになってしまった。 [Generic] Creating an image format with an unknown type is an error 原因 PHImageRequestOptionsでsetNetworkAccessAllowedがNOになっていたからっぽい。 PHImageRequestOptions *options = [PHImageRequestOptions new];時には、 setNetworkAccessAllowedの値はデフォルトではNOになる。(確認済み) 写真を古い順で取得していたとき(=options:nilのとき)は当現象は起こらなかったため、 requestImageForAssetのoptionsがnilのときは、デフォルトでYESだった?(推測) (そんなややこしいことがあるのか?) 解決策 PHImageRequestOptions *options = [PHImageRequestOptions new]; [options setDeliveryMode:PHImageRequestOptionsDeliveryModeHighQualityFormat]; [options setNetworkAccessAllowed:YES]; if(asset) { [[PHImageManager defaultManager] requestImageForAsset:asset targetSize:PHImageManagerMaximumSize contentMode:PHImageContentModeDefault options:options resultHandler:^(UIImage *image, NSDictionary *info) { // resultHandlerは低画質→高画質と複数回呼ばれることもあるため、高画質の時のみ取得 // (PHImageRequestOptionsDeliveryModeHighQualityFormatがセットされていたら1度しか呼ばれないはず) if ([info[PHImageResultIsDegradedKey] boolValue] == NO) { if (image) { [NSThread detachNewThreadSelector:@selector(addImage:) toTarget:self withObject:image]; } else { [NSThread detachNewThreadSelector:@selector(addImageEnd:) toTarget:self withObject:nil]; } } }]; } しかし

setNetworkAccessAllowedをコメントアウトしても再現しなくなってしまった…。原因が違うのかもしれない…。

参考

Requesting image with Swift 3 results in "Creating an image format with an unknown type is an error"
I have a controller in which I just fetch images in user's gallery and show them. It used to work with XCode 7.3, but after upgrading it to XCode 8.0 and updati...

コメント