【问题标题】:How to get extension to return subclass type [duplicate]如何获得扩展以返回子类类型[重复]
【发布时间】:2018-04-23 18:09:00
【问题描述】:

我正在尝试扩展 NSManagedObject 以获取对象,但作为子上下文的一部分。我试图让函数返回子类类型 - 而不是 ManagedObject。

extension NSManagedObject {

func inContext(_ context: NSManagedObjectContext) -> Self {
    let objectID = self.objectID
    let childObject = context.object(with: objectID)
    return childObject
}

知道如何让函数返回正确的类型吗?

【问题讨论】:

  • 您的意思是要从 coreData 中匹配一个对象吗?

标签: swift core-data


【解决方案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)

【讨论】:

  • 太好了 - 非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-06-25
  • 1970-01-01
  • 2021-07-06
  • 1970-01-01
  • 2011-02-01
  • 2018-01-10
  • 2018-04-06
相关资源
最近更新 更多