我正在尝试扩展NSManagedObject
以获取对象,但作为子上下文的一部分。我试图让函数返回子类类型 - 而不是ManagedObject。
extension NSManagedObject {
func inContext(_ context: NSManagedObjectContext) -> Self {
let objectID = self.objectID
let childObject = context.object(with: objectID)
return childObject
}
知道如何让函数返回正确的类型吗?
答案 0 :(得分:1)
你必须使这个通用!
extension NSManagedObject {
func inContext<T: NSManagedObject>(_ context: NSManagedObjectContext) -> T? {
let objectID = self.objectID
let childObject = context.object(with: objectID)
return childObject as? T
}
}
不幸的是,你必须使用类型注释这样调用它,除非可以推断出类型。
let objectInContext: MyManagedobjectType? = myManagedObject.inContext(someContext, type: MyManagedObjectType.self)