我遇到的问题是我的NSTextField IBOutlets显示为nil,即使它们已连接到故事板。在下面的简化示例中,我有一个按钮,按下该按钮时,应列出3个文本标签的字符串值。
以下是按钮的代码:
import Foundation
import Cocoa
class ViewController: NSObject{
@IBAction func pushButton(sender: AnyObject) {
let oneText = Texts()
oneText.listTextFields()
}
}
以下是NSTextField列表的代码:
import Foundation
import Cocoa
class Texts: NSObject{
@IBOutlet weak var l1: NSTextField!
@IBOutlet weak var l2: NSTextField!
@IBOutlet weak var l3: NSTextField!
var textArray = [NSTextField]()
func listTextFields (){
self.textArray = [self.l1,self.l2,self.l3]
for var i = 0; i < textArray.count; i++ {
let text = textArray[i]
print(text.stringValue)
}
}
}
我已经验证了IBOutlets都已连接,但是当我运行程序并按下按钮时,我收到“致命错误:在解包可选值时意外发现nil”消息。查看调试器,看起来树NSTextfields是“nil”。
我做错了什么?
答案 0 :(得分:0)
您没有从故事板中加载Texts
,因此它对您的网点一无所知。 Texts()
创建对象的新实例,然后在其上调用该方法。
您可能在界面构建器中的某处有一个现有的Texts
对象,ViewController
应该有一个出口。