<分区>
在 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)
}
}
在 NSManagedObject
的子类 Person
类中,我可以这样调用它:
let person = Person.create(context)
person 将是 NSManagedObject
类型,我必须将其转换为 Person
,才能访问姓名、电话等属性...
我想以某种方式避免这种情况,并使方法 create
返回各种类型的 instancetype
,但我不确定该怎么做?