gpt4 book ai didi

Swift 覆盖泛型 swift

转载 作者:搜寻专家 更新时间:2023-11-01 05:33:27 26 4
gpt4 key购买 nike

我正在尝试为 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com