为什么这样的代码:
if Note1Math.stringValue == "" {
TxtFilled = 0
}else{
TxtFilled = 1
}
给出此错误?:
2015-06-18 20:20:17.633 Office [41763:430750]无法将(Note1)插座从(Office.ViewController)连接到(NSTextField):缺少设置器或实例变量。致命错误:解开Optional值时意外发现nil(lldb)
消息的这一部分:
2015-06-18 20:20:17.633 Office [41763:430750]无法将(Note1)插座从(Office.ViewController)连接到(NSTextField):缺少设置器或实例变量。
并非来自该代码。它来自NIB或情节提要的加载。大概您一次命名了一个插座Note1
,将其连接到NIB或情节提要中,然后在代码中将其重命名为Note1Math
,而没有修复NIB /故事板。
然后,当您访问Note1Math
时,它就是nil
(因为它未在NIB / storyboard中连接)。导致第二条消息:
致命错误:在展开可选值(lldb)时意外发现nil
解决方案是进入NIB或情节提要,断开旧名称的插座,然后重新连接插座。
尝试一下...
如果Note1Math是文本框...
if Note1Math.text == "" {
TxtFilled = 0
}
else{
TxtFilled = 1
}
如果Note1Math只是一个字符串...
if Note1Math == "" {
TxtFilled = 0
}
else{
TxtFilled = 1
}
之所以如此,是因为您曾经为情节提要元素创建了一个@IBOutlet
。然后,您稍后从快速文件中删除了代码(参考)。
我创建了一个示例,其中创建了两个额外的@IBOutlets
(我将它们命名为'correctField'和'incorrectField'-两者都是不正确的),并将它们从情节提要板连接到我的swift文件。然后,我从swift文件中删除了代码。这将生成日志,如下图所示:
要删除这种日志消息,您可以执行以下操作:
@IBOutlets
)的故事板元素。这是在xCode 11中完成的