BETA

Swift4.2でカメラロールから取得した画像をプログラム中で取得する際に注意すべき点

投稿日:2018-12-06
最終更新:2018-12-06

Swift4.2でカメラロールから画像を取得しようとしたら、ビルドできなかったので備忘録として残します。誰かの役にたてば幸せ。

結論

imagePickerController メソッドの引数と info のインデックスが、Swift4.2で変更されたので、4.2に対応する書き方をする。

[Swift4.2での書き方]

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {  
    if let image = info[.originalImage] as? UIImage {  
        setImageToScene(image: image)  
    }  
}  

修正前コード

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {  
    if let image = info[UIImagePickerControllerOriginalImage] as? UIImage {  
        setImageToScene(image: image)  
    }  
}  

吐いていたSwift Compile Error

Cannot subscript a value of type '[String : Any]' with an index of type 'UIImagePickerController.InfoKey'  

修正後コード

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {  
    if let image = info[.originalImage] as? UIImage {  
        setImageToScene(image: image)  
    }  
}  

Swift4.2では

[String : Any] → [UIImagePickerController.InfoKey : Any]
info[.originalImage] → info[.originalImage]

とすることで問題なく動作します。

参考ページ

stackoverflow Cannot subscript a value of type...
Apple Documentation imagePickerController(...

技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
駆け出しエンジニアからエキスパートまで全ての方々のアウトプットを歓迎しております!
or 外部アカウントで 登録 / ログイン する
クランチについてもっと詳しく

この記事が掲載されているブログ

@KatsuyoshiIshii'の技術ブログ

よく一緒に読まれる記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう
目次をみる
技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
or 外部アカウントではじめる
10秒で技術ブログが作れます!