我正在使用 MVVM 構建一個應用程式。我需要在我的 ViewController 中初始化 viewModel,這就是我的做法:
private var viewModel: SunCalendarViewModel!
init(viewModel: SunCalendarViewModel) {
self.viewModel = viewModel
super.init(nibName: nil, bundle: nil)
}
required init?(coder: NSCoder) {
super.init(coder: coder)
}
但是,當我嘗試呼叫我的 viewModel 時,我的應用程式崩潰了,因為結果為零:
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
viewModel.search(in: textField.text)
return true
}
我很困惑,因為我相信我確實在 init 中初始化了我的 viewModel,所以它不應該為零。在 MVVM 中,我們沒有像 MVP 那樣的配置器,所以我不知道我應該在哪里做它。任何幫助表示贊賞!
uj5u.com熱心網友回復:
如果您看看 clean-swift 是如何做到的,這也可以滿足您的目的(
第二種方法是在實體化控制器時公開 viewmodel 屬性并從父級初始化它,然后您就不需要 init 方法和 setup 函式。
另一種方式將超過 DI
uj5u.com熱心網友回復:
僅根據您發布的代碼,我認為您可能錯過了模型的真正初始化,應該是這樣的:
private var viewModel: SunCalendarViewModel!
init(viewModel: SunCalendarViewModel) {
super.init(nibName: nil, bundle: nil)
self.viewModel = SunCalendarViewModel()
}
...
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/348886.html
