

swift初心者です、端末のアルバムからファイルを選択したときに  
imagePickerControlleデリゲード内でそのファイルが「画像」か「動画」かを判定するときはどのように記述すればよいのでしょうか？  
以下のようなソースを想定しています。

[code]

    // スマホのアルバム(ライブラリ)から呼び出されるのを想定
     func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [ UIImagePickerController.InfoKey : Any]) {
    
       if("画像ファイル"){
    　　　　処理Ａ
       }
       else if("動画ファイル"){
    　　　　処理Ｂ
       }
    
    }
    
[/code]

以上、よろしくお願いいたします。


CC BY-SA 4.0
2019-07-06T08:22:35.397
56450
2019-07-06T11:58:25.967
29300
question
swift delegate uiimagepickercontroller
imagePickerControllerデリゲード内でのアルバムから選択したファイルの判定


`info`と言うパラメータにお気づきでしょうか?その中には選択した画像や動画そのもの以外にもいろいろな情報が詰め込まれています。

Key型である`UIImagePickerController.InfoKey`を調べるとどんな情報が入っている(可能性がある)のか、ほぼわかるようになっています。

[`UIImagePickerController.InfoKey`](https://developer.apple.com/documentation/uikit/uiimagepickercontroller/infokey)

その中では`mediaType`と言うのがあなたの目的のために使えそうです。

[`mediaType`](https://developer.apple.com/documentation/uikit/uiimagepickercontroller/infokey/1619121-mediatype)

ドキュメントに従ってコードを書くとこんな感じになるでしょう。

[code]

        func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
            if let mediaType = info[.mediaType] as? String {
                if mediaType == kUTTypeImage as String {
                    print("画像")
                    //処理A
                    //...
                } else if mediaType == kUTTypeMovie as String {
                    print("動画")
                    //処理B
                    //...
                } else {
                    print(mediaType)
                }
            } else {
                print("Media type unspecified")
            }
        }
    
[/code]

ちなみに`import
MobileCoreServices`を宣言しておかないと、`kUTTypeImage`や`kUTTypeMovie`のところがエラーになってしまいます。


CC BY-SA 4.0
2019-07-06T11:58:25.967
56454
2019-07-06T11:58:25.967
13972
56450
answer