Swift: UIImageView - 在展开可选值时意外发现 nil

Swift: UIImageView - Unexpectedly found nil while unwrapping an Optional value

class DisplayImageVC: BasePageView { //BasePageView inherits from UIViewController

    @IBOutlet weak var displayImage: UIImageView!
        override func viewDidLoad() {
        self.displayImage.backgroundColor = UIColor.yellowColor()
    }

.....

在另一个 class 中,我尝试这个并得到一个致命错误:

    var displayImageView = self._pageContent[1] as DisplayImageVC        
    displayImageView.displayImage.image = UIImage(named: ("displayChecklane"))

日志:

fatal error: unexpectedly found nil while unwrapping an Optional value

Images.xcassets

var displayImageView = self._pageContent[1] as DisplayImageVC        
displayImageView.displayImage.image = UIImage(named: ("displayChecklane"))

你在第二行崩溃了。你知道这是因为有些东西是 nil,但你不知道这里的 nil 是什么。你假设它是图像。这是一个错误的假设;如果它是正确的,就不会崩溃,因为你没有强制展开它,并且将 nil 分配给图像视图的图像是合法的。

相反,考虑一下:也许 displayImageView.displayImage 是零。也就是说,nil 是你试图分配 的 UIImageView。这是有道理的,因为这是一个出口。如果 DisplayImageVC 的视图还没有加载,它的出口还没有被填充——它们仍然是零。

你如何解决这个问题取决于你想做什么。我个人认为你的方法从一开始就是假的;您无需设置另一个视图控制器的插座或其插座的 属性 或其界面的任何方面。您应该在 DisplayImageVC 中有一个 image 属性,在这里,您应该设置 属性;这样,当视图控制器显示它的视图时,可以配置它自己的界面。