J'ai une base ViewController et un base ViewModel. Le ViewModel de base est utilisé par le ViewController de base. De plus, j'ai 2 sous-classes de ViewControllers et 2 sous-classes de ViewModels qui doivent être utilisées ensemble.
Exemple:
class BaseViewModel {
func somethingBasic() {}
}
class ConcreteViewModel1: BaseViewModel {
func somethingConcrete1() {}
}
class ConcreteViewModel2: BaseViewModel {
func somethingConcrete2() {}
}
class BaseViewController {
let viewModel: BaseViewModel
init(with viewModel: BaseViewModel) {
self.viewModel = viewModel
}
}
class ConcreteViewController1: BaseViewController {
init(with viewModel: ConcreteViewModel1) {
super.init(with: viewModel)
}
func useViewModel() {
viewModel.somethingBasic()
viewModel.somethingConcrete1() //this does not work
}
}
class ConcreteViewController2: BaseViewController {
init(with viewModel: ConcreteViewModel2) {
super.init(with: viewModel)
}
func useViewModel() {
viewModel.somethingBasic()
viewModel.somethingConcrete2() //this does not work
}
}
La question est : quelle est la solution préférée pour faire fonctionner viewmodel.somethingConcrete1()
et viewmodel.somethingConcrete2()
?