子類,我想init
的TVC
類時得到兩個錯誤:斯威夫特3:初始化的UITableViewController自UITableViewController中
class TVC: UITableViewController {
let vm: ViewModel
override init(style: UITableViewStyle){
super.init(style: style)
self.vm = ViewModel(tvc: self) // Error: Property `self.vm` not initialized at super.init call
}
override init(nibName nibNameOrNil: String!, bundle nibBundleOrNil: NSBundle!){
super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
}
required init(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
// Error: Property `self.vm` not initialized at super.init call
}
}
錯誤:Property self.vm not initialized at super.init call
工作圍繞創建VM可選(VM的: ViewModel?)的作品,但我希望如此,如果可能的話。
我在做什麼錯?
你必須在調用.init之前初始化所有的let屬性,但在我看來,你的想法是錯誤的:視圖模型不應該知道視圖,你應該使用一些觀察者模式。 – cescobaz