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 上...
我不断收到致命错误:每当我完成选择图片时,在展开可选值时意外发现 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 上...