“意外地发现了nil”出了viewDidLoad

时间:2016-04-01 13:38:06

标签: ios swift macos

我在视图中有一些出口,我尝试在函数中以编程方式编辑它们。

Xcode说:

  

在展开可选值时意外发现nil

但是,当我在viewDidLoad()后面super.viewDidLoad()编辑插座时,它就像魅力一样。

使用功能:

func test(){
    localDeviceNameView.stringValue = "some stuff" //Found nil here

}

使用viewDidLoad

 override func viewDidLoad() {
    super.viewDidLoad()

    localDeviceNameView.stringValue = "some stuff" //Works well  

}

我怎样才能让它发挥作用?

2 个答案:

答案 0 :(得分:3)

您可以在变量上使用didSet。像这样:

@IBOutlet var localDeviceNameView : UIView! {
  didSet {
    localDeviceNameView.stringValue = "some stuff"
  }
}

这种方法的好处在于,只有在设置localDeviceNameView时才设置stringValue,这在从NIB / Storyboard加载时是正确的。

我认为这正是你所需要的。

答案 1 :(得分:1)

您尝试在视图完全加载之前调用test(),因此它们尚不存在。这样做:

class MyController: UIViewController {
    var something = ""

    override viewDidLoad() {
        super.viewDidLoad()
        localDeviceNameView.stringValue = something
    }
}

或者只有在确定所有观看次数都已加载(test()被调用)时才会调用您{r viewDidLoad()方法