我正在尝试创建一个工厂,它将采用泛型类型并返回给定类型的数组。但是,当我尝试使用T.self()
时,它只是使用超类初始化程序(在这种情况下为Initializable
)进行初始化。但是,我有一个我想要初始化的子类。
class Initializable {
let object: PFObject
init(_ object: PFObject) {
self.object = object
}
}
class ObjectFactory {
class func create<T: Initializable>(objects: [AnyObject]?) -> [T] {
if let objects = objects as? [PFObject] {
return objects.map {object in
T.self(object)
}
}
println("unable to create objects")
return []
}
}
然后当我尝试
let subclasses: [Subclass] = ObjectFactory.create([subclass])
然后subclasses
最终成为Initializable
的数组,而不是Subclass
。我做错了吗?