初始化从视图控制器的IBoutlet变量初始化的变量?
我想用termAndDefTable和copyNPasteTable作为输入初始化变量deckEditorModel。我不想让deckEditorModel成为一个可选变量,因为我知道我不能在C中使用这种策略。我尝试将deckEditorModel放入视图控制器的init方法中,但似乎所需的termNDefTable: termAndDefTable, otherTable: OtherTable
不适用于在init中使用它们作为输入,因为它们是IBOutlets。有人会如何去吗初始化从视图控制器的IBoutlet变量初始化的变量?
import Cocoa
class DeckEditorViewController: NSViewController {
@IBOutlet weak var importToolsView: NSView!
@IBOutlet weak var termAndDefTable: NSTableView!
@IBOutlet weak var otherTable: NSTableView!
var deckEditorModel:DeckEditorModel?
override func viewDidLoad() {
super.viewDidLoad()
// Do view setup here.
self.view.wantsLayer = true
}
override func awakeFromNib() {
deckEditorModel = DeckEditorModel(termNDefTable: termAndDefTable, otherTable: otherTable)
}
我试着将它添加到viewDidLoad中,但显然是晚来定义deckEditorModel。当deckEditorModel是一个可选
你可以初始化变量懒洋洋地
lazy var deckEditorModel : DeckEditorModel = {
return DeckEditorModel(termNDefTable: self.termAndDefTable, otherTable: self.otherTable)
}()
谢谢。有效。我认为懒惰var会工作。懒惰的变数没有太多的经验。 –
这是避免可选项的一个非常方便的方法。 – vadian
广场
deckEditorModel = DeckEditorModel(termNDefTable: termAndDefTable, otherTable: otherTable)
在viewDidLoad中,那么网点将已设置下面的错误dissappears。
为什么要避免斯威夫特构造简单,因为他们没有在C语言?你打算把你的代码移植到C吗? – Caleb