gpt4 book ai didi

ios - Swift 泛型类如何从中创建类型对象

转载 作者:行者123 更新时间:2023-11-28 11:09:44 28 4
gpt4 key购买 nike

我有一个通用类,它应该简单地将一个模型映射到一个 View 模型(和其他东西,但主要是这个)。

class InfoProv <M, VM: CreationableFromModel> {
var models = [M]()
var viewModels = [VM]()
func generateModelView() -> VM {
return VM(model: M)
}
}

protocol CreationableFromModel {
typealias Model
init(model: Model)
}

CreationableFromModel 协议(protocol)的一致性表明 View 模型必须知道如何使用模型类型创建自己。
我真的不明白如何“传递”给 VM init 一个有效的模型实例

最佳答案

您的代码中只有小问题

protocol CreationableFromModel {
typealias Model

init(model: Model)
}

// you need a generic constraint to create a connection between the two generic types
class InfoProv <M, VM: CreationableFromModel where VM.Model == M> {
var models = [M]()
var viewModels = [VM]()

func generateModelView(m: M) -> VM {
// you were passing type M here, you need an instance m of type M
return VM(model: m)
}
}

关于ios - Swift 泛型类如何从中创建类型对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35890201/

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