提到IBOutlets时的零值 - swift,Cocoa

时间:2015-12-01 12:49:13

标签: swift cocoa

我遇到的问题是我的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”。

我做错了什么?

1 个答案:

答案 0 :(得分:0)

您没有从故事板中加载Texts,因此它对您的网点一无所知。 Texts()创建对象的新实例,然后在其上调用该方法。

您可能在界面构建器中的某处有一个现有的Texts对象,ViewController应该有一个出口。