继续致命错误:在展开Optional值时意外发现nil

时间:2015-05-21 10:32:31

标签: ios swift uiimagepickercontroller

我一直有致命的错误:在我完成选择图片的时候意外地找到了nil,只要我完成了选择图片

enter image description here

编辑版 图像的价值在那里

enter image description here

UPDATE2

enter image description here

3 个答案:

答案 0 :(得分:2)

首先将图像视图添加到视图控制器,然后您将看到输出。目前您无法看到输出,因为您没有将此图片视图添加到视图中。所以请做

override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.

        imagePicked = UIImageView()
        imagePicked.frame = CGRectMake(100, 100, 100, 100)

        self.view.addSubview(imagePicked);
    }

    func imagePickerController(picker: UIImagePickerController, didFinishPickingImage image: UIImage!, editingInfo: [NSObject : AnyObject]!) {

    picker.dismissViewControllerAnimated(true, completion: nil)
    imagePicked!.image = image
}

这种情况正在发生,因为您在没有分配imagePicked的情况下分配图像。

希望它会对你有所帮助。

答案 1 :(得分:0)

您遇到的第一个错误是因为您的imagePicked未初始化,而您正在为其分配图像。

解决这个问题的方法就是初始化它。在viewdidLoad imagePickerController(_:didFinishPickingMediaWithInfo:)

中使用以下代码
imagePicked = UIImageView(image: image)

请记住使用以下代码

关闭imagePicker
picker.dismissViewControllerAnimated(true, completion: nil)

要使图像可见,请将案例imagePicked中的图像视图添加到视图中。为此,请在关闭imagePicker

后添加以下代码
imagePicked.frame = CGRectMake(0, 0, 100, 100) // Use values that you need
self.view.addSubview(imagePicked)

imagePickerController(_:didFinishPickingMediaWithInfo:)应该看起来像这样

func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [NSObject : AnyObject]) {
    picker.dismissViewControllerAnimated(true, completion: nil)
    imagePicked = UIImageView(image: info[UIImagePickerControllerOriginalImage] as! UIImage)
    imagePicked.frame = CGRectMake(0, 0, 100, 100)  // whatever frame you want
    self.view .addSubview(imagePicked)
}
  

注意:    - imagePickerController:didFinishPickingImage:editingInfo:已弃用

答案 2 :(得分:0)

imagePicked是零。您将其声明在顶部(var imagePicked : UIImageView!)。感叹说:“嘿,这不会是零,我保证。”所以你沉默所有编译警告和错误,但是......你永远不会实例化它,所以你打破了承诺。

完成了使用信息完成图片的选择:

   if imagePicked == nil {
         //init and configure your imageView
         imagePicked = UIImageView(...)
   }

   //you can safely use it here...    

在顶部更改!至 ?

注意:init应该在任何人访问它之前在某个地方完成。也许在viewDidLoad ......