MVVMを使用していて、コントローラのinitのviewControllerにviewModelを割り当てたいとします。私はそうのようにこれを達成するだろうと思った:Controller InitにviewModelを割り当てる?
class LoginViewController: UIViewController, UITextFieldDelegate {
init(loginViewModel: LoginViewModel) {
self.loginViewModel = loginViewModel
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
fatalError("init(coder:) has not been implemented")
}
しかし、私はエラーを取得する:
Super.init isn't called on all paths before returning from initializer
はこれが取るべき正しい経路ではないですか?また、オブジェクトを必要とするときにviewModelを正しく初期化するにはどうすればよいですか?まずネットワーク要求を実行する必要がありますか?空のオブジェクトインスタンスでInit?
おかげ
編集:これは、イムは、現在のベストプラクティスとして
initWithViewAndViewModel:(loginView: LoginView, loginViewModel: LoginViewModel) {
super.init()
self.loginView = loginView
self.loginViewModel = loginViewModel
}
をあなたはスーパーに必要:
それが役立つかもしれない、このリンクを経由して行ってくださいあなたのviewcontroller initの.init。 – koropok
loginViewModelを割り当てる前に 'super.init()'を呼び出します。 –
私はそれを試みたが、私は得る...スーパークラス 'UIViewController'の指定されたイニシャライザを呼び出さなければならない – jackdm