【发布时间】:2017-09-25 11:06:47
【问题描述】:
我有一个实现 Mappable 协议的类,我想将类型作为参数传递给函数并获取该对象的实例,但该类型也可能是原始类型。
class MyMappable : Mappable {
required init?(map: Map) {
print("i am custom mappable")
}
}
func getInstance<T>() -> T{
if T.self == Int.self {
return 10 as T
}
if T.self is Mappable.self {
return T(Json : [:]) //this is the problem, T is not Mappable
}
}
我尝试的是像这样为 getInstance 创建 2 覆盖:
func getInstance<T>() -> T{}
func getInstance<T : Mappable>() -> T{}
但对于更多类型,它可能会被大量覆盖。 有没有办法让 swift 知道 T 在第一个函数中是可映射的?
【问题讨论】:
标签: swift generics objectmapper