gpt4 book ai didi

swift - 如何在类模板方法上调用静态方法?

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

我尝试在泛型 T: BaseModel 上调用类方法,其中 T 可以是 BaseModel 的子类。例如 Car。如果 T 应该是 Car,我希望在 Car 类上调用我的类方法。

但是,它总是以调用 BaseModel 类方法结束。

class func parse<T: BaseModel>(json: JSON, context: NSManagedObjectContext) throws -> T? {
return T.classParseMethod(json: json) //This never calls the Car.classParseMethod()
}

在哪里

let carObject = parse(json:json, context:context) as? Car

有什么帮助吗?

最佳答案

转换在函数调用之后完成,因此通用约束解析为 T = BaseModel。您希望函数知道类型,以便它可以正确解析通用约束:

func parse<T: BaseModel>(_ str: String) -> T? {
print(T.Type.self) // should print like: Car.Type
return T.parse(str) as? T
}

// Make the desired type known to swift
let car: Car? = parse("My Car Format String")

关于swift - 如何在类模板方法上调用静态方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44037568/

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