Swift:UIImageView - 在展开Optional值时意外地发现了nil

时间:2015-01-16 19:16:36

标签: swift uiimageview

class DisplayImageVC: BasePageView { //BasePageView inherits from UIViewController

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

...

在另一个课程中我尝试这个并得到一个致命的错误:

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

日志:

fatal error: unexpectedly found nil while unwrapping an Optional value

enter image description here

Images.xcassets enter image description here

1 个答案:

答案 0 :(得分:20)

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

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

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

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