質問: imageData.base64EncodedString(options: .lineLength64Characters) print(imageString) //ピッカーを閉じる picker.dismiss(animated: true, completion: nil) } } } ```
回答: ``` // cameraPicker.allowsEditing = true←ここをコメントアウトすると反応しなくなってしまう ``` ここをコメントアウトした場合、**編集後の写真情報は存在しない**ことになりますから ``` if let pickedImage = info[.editedImage] as? UIImage { ``` ここで`info[]`に与えるキーが`.editedImage`の場合、このオプショナルバインディングは無効(`info[.editedImage] == nil`)となり、中括弧内の処理は行われません。 ちなみに、`allowEditing`を`false`もしくは未設定のままだと、base64でエンコードされた文字列も表示されていないはずです(私はこれで気づきました)。 従って、設定とキーは一致させる必要があり、編集を行わないのであれば ``` if let pickedImage = info[.originalImage] as? UIImage { ``` のように、適切なキー名を指定する必要がありますのでご確認ください。 また、`dismiss`は中括弧内にいれると条件により閉じなくなってしまいますから、できればDelegate( `func imagePickerController(_:didFinishPickingMediaWithInfo:)`が呼ばれた直後に書いた方が良いかと思います(もちろん、処理内容に応じますから、適切な場所に置いていただければと思います)。