错误:无法使用索引类型为“ UIImagePickerController.InfoKey”的下标类型“ [String:Any]”的值

时间:2018-07-21 21:34:06

标签: ios swift coreml

我正在尝试重建Apple测试应用程序以通过CoreML进行图像检测,但是出现错误:

  

不能用索引类型为“ UIImagePickerController.InfoKey”的索引下标“ [String:Any]”类型的值

extension ImageClassificationViewController: UIImagePickerControllerDelegate, UINavigationControllerDelegate {
    func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String: Any]) {
        picker.dismiss(animated: true)

        let image = info[UIImagePickerControllerOriginalImage] as! UIImage
        imageView.image = image
        updateClassifications(for: image)
    }

错误出现在行中:

let image = info[UIImagePickerControllerOriginalImage] as! UIImage

1 个答案:

答案 0 :(得分:2)

您似乎正在使用Xcode 10 / iOS12。委托方法的签名已更改。

使用UIImagePickerController.InfoKey代替String作为info键。

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey: Any])

然后使用.originalImage代替UIImagePickerControllerOriginalImage

extension ImageClassificationViewController: UIImagePickerControllerDelegate, UINavigationControllerDelegate {
    func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey: Any]) {
        picker.dismiss(animated: true)

        let image = info[.originalImage] as! UIImage
        imageView.image = image
        updateClassifications(for: image)
    }