manager.requestImageForAssetのimageがnilになってしまう

投稿者: Anonymous

前提・実現したいこと

swiftで日記アプリを作っています。
実現したいことは、ユーザーのライブラリから写真データを取得して一覧表示し、写真選択機能を作成することです。

発生している問題・エラーメッセージ

ライブラリから取得した写真データのアセットをmanager.requestImageForAssetでuiimageにしたいのですが、nilになってしまいます。

let options = PHImageRequestOptions()
        options.deliveryMode = PHImageRequestOptionsDeliveryMode.HighQualityFormat
        options.synchronous = true
        options.networkAccessAllowed = true

        let asset = appDelegate?.photosAssets[indexPath.row-1]
        print("イメージ1(appDelegate?.photosAssets)")
        let manager:PHImageManager = PHImageManager()
        manager.requestImageForAsset(asset!, targetSize: CGSizeMake((self.view.bounds.size.width-4)/3, (self.view.bounds.size.height-4)/3), contentMode: PHImageContentMode.AspectFill, options: options, resultHandler:{(image,info)->Void in
               print("イメージ(image)")
               print("info(info)")

            if image != nil{

                cell.imageView.image = image
            }
        })

infoを確認すると、uiimageの生成がうまくいった時は、

infoOptional([PHImageResultIsDegradedKey: 0, PHImageResultWantedImageFormatKey: 5003, PHImageFileOrientationKey: 0, PHImageResultDeliveredImageFormatKey: 5003])

uiimageがnilになる時は、以下のようになります。

infoOptional([PHImageResultIsDegradedKey: 0, PHImageResultWantedImageFormatKey: 5003, PHImageResultIsPlaceholderKey: 0, PHImageResultIsInCloudKey: 0, PHImageResultDeliveredImageFormatKey: 0])

や、

([PHImageResultDeliveredImageFormatKey: 5003, PHImageResultIsDegradedKey: 0, PHImageResultWantedImageFormatKey: 5003])

どのようにすれば、解決できますでしょうか。
よろしくお願いします。

補足
他サイトでも質問させていただきましたが、解決に至っていない状況なので、質問させていただきます。
https://teratail.com/questions/31278?complete=

解決

今回の質問の現象は、iosのシュミレーターにのみ生じており、またシュミレーターの中でも問題なく写真表示できるものもあったりとよくわからないのが現状ですが、現時点での修正を書きます。

修正
PHImageReques‌​tOp‌​tionsDeliveryMode.HighQualityFormatを設定していたのを削除しました。
その結果、どのシュミレーターでもimageがnilにならないようになりました。

自分の環境では、なぜか写真がところどころぼやけてしまう(スクロールするとくっくりとなる)という問題はありますが、それはそれで修正していきたいと思います。

レアなケースかもしれませんが情報がお役に立ててばと思います。

回答者: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *