首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Swift覆盖通用swift

Swift覆盖通用swift
EN

Stack Overflow用户
提问于 2018-01-24 17:57:44
回答 1查看 297关注 0票数 2

我正在尝试实现MVVM Swift的泛型。我有两个基类,一个泛型类的协议。这里的特殊之处在于继承。我试了三个小时,但还是修不好。

代码语言:javascript
复制
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'

有泛型和继承经验的人可以帮助我。非常感谢。

EN

回答 1

Stack Overflow用户

发布于 2019-02-01 15:29:07

我通常这样做:

代码语言:javascript
复制
class BaseViewModel {
}

class TemplateViewModel<T: ObjectProtocol>: BaseViewModel {
    var objects: [T] = []
    init(){
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48419502

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档