モデルがない場合は機能しない UITableViewController サブクラスがあります。モデルがない場合、ビューを表示する目的はありません。
だから私は考えています、私のモデルプロパティはオプションの値であってはなりません。こういう安心感が欲しい。だから私は自分のモデルを渡す便利な初期化を作成しようとしています。
let model:Client
override init() {
super.init(style: UITableViewStyle.Plain)
}
convenience init(model:Client) {
self.init()
self.model = model
}
私の問題は、次のエラーが発生することです。
Property 'self.model' not initialised at super.init call
意味あり。init() が呼び出された場合、オプションではないプロパティによって要求されるため、プロパティは設定されません。
私はこれを克服しますか?
そのモデルは私の実際のモデルであることを覚えておいてください。ここでデフォルト値を設定しても意味がありません。また、探している安全性を無効にします。
ありがとうございました!
小さな注意:これを行うと、うまくいきません。とにかくモデルを設定するインスタンスはありません。
convenience init(model:Client) {
self.model = model
self.init()
}
編集:以下のアプローチは有望に思えた
let model: Client
required init(coder aDecoder: NSCoder) {
preconditionFailure("Cannot initialize from coder")
}
init(model:Client) {
self.model = model
super.init(style: UITableViewStyle.Plain)
}
ただし、次のエラーが表示されます。
fatal error: use of unimplemented initializer 'init(nibName:bundle:)'
そして最後に、ここでの解決策は次のように呼び出すことでした:
super.init(nibName: nil, bundle: nil)