【发布时间】:2018-08-01 13:15:36
【问题描述】:
在 objc 中,我创建了 NSManagedObject 的扩展来创建对象。现在所有子类都可以使用它来创建自己类型的对象。我已经在 swift 中尝试过类似的东西,但正如我所希望的那样,使用泛型。
extension NSManagedObject {
// MARK: - Creation Methods
class func create<T: NSManagedObject>(in context: NSManagedObjectContext) -> T {
let entity = NSEntityDescription.entity(forEntityName: T.description(), in: context)!
return T(entity: entity, insertInto: context)
}
}
在Person 类是NSManagedObject 的子类中,我可以这样称呼它:
let person = Person.create(context)
person 将是 NSManagedObject 类型,我必须将其转换为 Person,才能访问姓名、电话等属性...
我想以某种方式避免这种情况并让方法 create 返回 instancetype 的排序,但我不确定如何做到这一点?
【问题讨论】: