Keep getting fatal error: unexpectedly found nil while unwrapping an Optional value

Keep getting fatal error: unexpectedly found nil while unwrapping an Optional value

我不断收到致命错误:每当我完成选择图片时,在展开可选值时意外发现 nil

编辑后的版本 图片的价值在那里

更新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。

希望对您有所帮助。

您遇到的第一个错误是因为您的 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)
}

Note: - imagePickerController:didFinishPickingImage:editingInfo: is deprecated

imagePicked 为零。您在顶部声明它 (var imagePicked : UIImageView!)。感叹号说 "hey, this won't be nil, I promise." 所以你沉默了所有编译警告和错误,但是......你从未实例化它,所以你违背了诺言。

在没有完成选择图像的信息中:

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

   //you can safely use it here...    

在顶部更改!到 ?

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