Ios 意外发现零-“setText”-Swift/Watchkit

Ios 意外发现零-“setText”-Swift/Watchkit,ios,swift,watchkit,Ios,Swift,Watchkit,我收到这个错误: 致命错误:在展开可选文件时意外发现nil …当我尝试更改接口控制器中的标签文本时,在收到通知时,从通知控制器调用函数。这是我的密码: 界面控制器 通知控制器 当我删除函数并打印时,错误消失了,那么为什么setText不工作呢?当我将它设置为test时,它怎么可能是nil 编辑:错误由:settexttest引发 提前谢谢 试试这个: fun test() { guard patt != nil else { print("patt doesn't exist!"

我收到这个错误:

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

…当我尝试更改接口控制器中的标签文本时,在收到通知时,从通知控制器调用函数。这是我的密码:

界面控制器

通知控制器

当我删除函数并打印时,错误消失了,那么为什么setText不工作呢?当我将它设置为test时,它怎么可能是nil

编辑:错误由:settexttest引发

提前谢谢

试试这个:

fun test() {
   guard patt != nil else {
     print("patt doesn't exist!")
     return
   }
   patt.setText("testtesttest")
}
概率是零。等到awakeFromNib被叫去寻找任何出口。
另外,由于您说这是来自通知,所以将设置的文本包装在分派块中,以将其放在主线程上。

您的错误从这里开始:

let controller = InterfaceController()
您可以实例化一个接口控制器。但它并不是从故事板中实例化的,所以它的出口不会连接到任何场景

然后,您尝试访问一个隐式打开的可选出口,该出口从未连接到任何文本标签,因此您的程序会合理地崩溃


这由dupe目标在隐式展开选项下覆盖

可能重复@PetahChristian我问的问题与你认为是重复的问题不同。。。我把它编辑得更具体了,没什么不同。你的崩溃是因为你的patt隐式解包可选值为零,这被dupe目标覆盖了。那么我应该在哪里实例化控制器呢?这是一个完全无关的问题。我建议在发布新问题之前,先研究一下,看看是否有人已经问过或回答过这个问题。
fun test() {
   guard patt != nil else {
     print("patt doesn't exist!")
     return
   }
   patt.setText("testtesttest")
}
let controller = InterfaceController()