Ios 线程1:致命错误:在展开可选值时意外发现nil。从Gallery swift获取图像

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() {

我试图通过按钮从图库中获取图像,但出现以下错误:

线程1:致命错误:在展开文件时意外发现nil 可选值

我已经看了所有其他正在讨论的问题 与我的类似,但由于某种原因,我无法解决我的问题 问题


第一个问题是将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)

    }