Ios 线程1:致命错误:在展开可选值时意外发现nil。从Gallery swift获取图像
我试图通过按钮从图库中获取图像,但出现以下错误: 线程1:致命错误:在展开文件时意外发现nil 可选值 我已经看了所有其他正在讨论的问题 与我的类似,但由于某种原因,我无法解决我的问题 问题Ios 线程1:致命错误:在展开可选值时意外发现nil。从Gallery swift获取图像,ios,swift,xcode,image-processing,uiimageview,Ios,Swift,Xcode,Image Processing,Uiimageview,我试图通过按钮从图库中获取图像,但出现以下错误: 线程1:致命错误:在展开文件时意外发现nil 可选值 我已经看了所有其他正在讨论的问题 与我的类似,但由于某种原因,我无法解决我的问题 问题 第一个问题是将imageTest变量切换到UIImageView的不同实例。请记住,当您声明一个IBOutlet并使用!变量的内存指针引用内存中的nil值。您不再需要再次分配它。此外,将来引用时,它将不再需要展开,因为!在声明中,使力展开显式 override func viewDidLoad() {
第一个问题是将imageTest变量切换到UIImageView的不同实例。请记住,当您声明一个IBOutlet并使用!变量的内存指针引用内存中的nil值。您不再需要再次分配它。此外,将来引用时,它将不再需要展开,因为!在声明中,使力展开显式
override func viewDidLoad() {
super.viewDidLoad()
imageTest = UIImageView() -- ***** Remove this line *****
此外,这需要改变
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
guard let image = info[.originalImage] as? UIImage else {
fatalError("Error")
}
imageTest!.image = image -- ******* REMOVE THE BANG HERE ******
dismiss(animated: true, completion: nil)
}
你什么时候会撞车?按下按钮时或选择图像后?选择图像后发生在第行:imageTest!。image=image表示您的imageTest图像视图为零(缺少)。确保图像视图正确绑定到视图控制器为什么要在viewDidLoad中将imageTest分配给UIImageView的新实例?当您声明类型以“!”结尾的视图时,变量指向内存中的nil值,无需将其分配给其他实例。
override func viewDidLoad() {
super.viewDidLoad()
imageTest = UIImageView() -- ***** Remove this line *****
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
guard let image = info[.originalImage] as? UIImage else {
fatalError("Error")
}
imageTest!.image = image -- ******* REMOVE THE BANG HERE ******
dismiss(animated: true, completion: nil)
}