码
我有以下协议:
protocol BaseViewController {
typealias ViewModelType: BaseViewModel
var viewModel: ViewModelType? { get set }
}
protocol BaseViewModel {
}
对于视图模型,我还具有以下协议:
protocol MainViewModel: BaseViewModel {
}
然后在我的MainViewController中:
class MainViewController: UIViewController, BaseViewController {
typealias ViewModelType = MainViewModel
var viewModel: ViewModelType?
...
}
失误
在MainViewController上,我得到了错误
Type 'MainViewController' does not conform to protocol 'BaseViewController'
以下是两个相关的错误:
在BaseViewController上:
Unable to infer associated type 'ViewModelType' for protocol 'BaseViewController'
在MainViewController的viewModel属性上
Inferred type 'BaseViewModel' (by matching requirement 'viewModel') is invalid: does not conform to 'BaseViewModel'
所需结果
我想限制ViewModelType的值以符合协议BaseViewModel。如果这可以通过另一种方式完成,那将回答我的问题。但是我想知道我在做什么错。
最佳答案
我认为您需要协议BaseViewModel
的具体实现,因此将MainViewModel
定义为结构或类即可。