无法指定类型的值' [String:AnyObject]

时间:2016-04-30 22:07:53

标签: ios swift

我正在使用Xcode 7和swift我在iPhone中运行我的应用程序时出现此错误:

  

无法将[String : AnyObject]类型的值指定为UIImage?

类型
   func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) {
                imgview.image = info
                [UIImagePickerControllerOriginalImage]as?UIImage;
                dismissViewControllerAnimated(true, completion: nil)
            }

2 个答案:

答案 0 :(得分:1)

问题是你不能将[]运算符拆分到Swift中的单独一行:方括号需要与被解除引用的字典在同一行。另外,不要忘记解雇并释放picker

picker.dismissModalViewControllerAnimated(true)
picker.release()
imgview.image = info[UIImagePickerControllerOriginalImage] as UIImage

由于Swift不使用强制分号来分解语句,因此您需要更加关注哪一行。您的代码解释如下:

  • info分配给imgview.image
  • 投射包含UIImagePickerControllerOriginalImageUIImage
  • 的数组

显然,这不是你想要获得的效果。将方括号移动到与info相同的行将解决此问题。

答案 1 :(得分:0)

info是一本字典,这是[String : AnyObject]的含义。字典的键是字符串,值可以是任何对象。然而,你写道:

imgview.image = info

因此,您为imgview.image分配了一些字典,但imgview.image的类型为UIImage可选。相反,你需要像:

let image = info[UIImagePickerControllerEditedImage] as! UIImage
imageView.image = image