Swift通用对象工厂不会使用子类初始化器

时间:2015-03-31 21:14:25

标签: ios swift generics factory

我正在尝试创建一个工厂,它将采用泛型类型并返回给定类型的数组。但是,当我尝试使用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。我做错了吗?

0 个答案:

没有答案