質問: swift初心者です、端末のアルバムからファイルを選択したときに imagePickerControlleデリゲード内でそのファイルが「画像」か「動画」かを判定するときはどのように記述すればよいのでしょうか? 以下のようなソースを想定しています。 ``` // スマホのアルバム(ライブラリ)から呼び出されるのを想定 func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [ UIImagePickerController.InfoKey : Any]) { if("画像ファイル"){ 処理A } else if("動画ファイル"){ 処理B } } ``` 以上、よろしくお願いいたします。
回答: `info`と言うパラメータにお気づきでしょうか?その中には選択した画像や動画そのもの以外にもいろいろな情報が詰め込まれています。 Key型である`UIImagePickerController.InfoKey`を調べるとどんな情報が入っている(可能性がある)のか、ほぼわかるようになっています。 `UIImagePickerController.InfoKey` その中では`mediaType`と言うのがあなたの目的のために使えそうです。 `mediaType` ドキュメントに従ってコードを書くとこんな感じになるでしょう。 ``` 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") } } ``` ちなみに`import MobileCoreServices`を宣言しておかないと、`kUTTypeImage`や`kUTTypeMovie`のところがエラーになってしまいます。