作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在尝试为 MVVM Swift 实现泛型。我有两个基类,一个通用类的协议(protocol)。这里的特殊之处在于继承。我试了三个小时,但无法修复 :(。
protocol ObjectProtocol {
var id: Int { get set }
var name: String { get set }
}
class BaseViewModel<T: ObjectProtocol> {
var objects: [T] = []
init(){
}
}
protocol ListViewControllerType {
associatedtype T: ObjectProtocol
associatedtype ViewModelType: BaseViewModel<T>
var viewModel: ViewModelType! { get set }
func showError(error: String)
}
extension ListViewControllerType {
func showError(error: String) {
print(error)
}
}
class Consult: ObjectProtocol {
var id: Int = 1
var name: String = "Consult"
}
class ConsultViewModel<T: Consult>: BaseViewModel<Consult> {
}
class ConsultViewController: ListViewControllerType {
var viewModel: ConsultViewModel<Consult>!
}
但我在 var viewModel: ConsultViewModel<Consult>!
中出错
这是错误:Type 'ConsultViewController' does not conform to protocol 'ListViewControllerType'
有泛型和继承经验的人可以帮助我。非常感谢。
最佳答案
我通常是这样的:
class BaseViewModel {
}
class TemplateViewModel<T: ObjectProtocol>: BaseViewModel {
var objects: [T] = []
init(){
}
}
关于Swift 覆盖泛型 swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48419502/
我是一名优秀的程序员,十分优秀!