0
我有一个Store类,它被编码为泛型,因此它可以管理从公共基类派生的所有类。Swift泛型,创建派生对象
商店有一个new()方法,该方法创建并返回它当前管理的类。理论上讲,它应该返回派生类。
不幸的是,商店总是返回基类。下面是代码片段来解释它:
import UIKit
class Base: NSObject {
var ID:Int=0
}
class Adress:Base
{
var name = ""
}
class Store<T:Base> {
var nextID:Int = 0
func getNextID()->Int {
return ++nextID;
}
func new() ->T{
let n = T()
n.ID = getNextID()
return n
}
}
let store = Store<Adress>()
var adr:Adress = store.new() // should be Adress, but is Base
adr.name = "Tom" // crash here, because adr is not an Adress
如果我调试商店里面的new()方法,它创建了一个ADRESS对象。但在调用代码中,它突然变成了一个Base对象。
任何想法这里怎么了?
伊万,你说得对。但我的意图是保持商店的代码通用。 new()函数允许我初始化从Base派生的任何类,并带有一些存储内部事物。但是我也可以在店里插入新对象的时候这样做。不管怎么说,还是要谢谢你! –