gpt4 book ai didi

swift - 合并 NSManagedObject 类

转载 作者:行者123 更新时间:2023-11-28 14:22:34 26 4
gpt4 key购买 nike

我有多个使用临时变量扩展的 NSManagedObject 类,从另一个上下文返回它的实例。下面的方法工作正常,但是对于很多类来说有点乏味。

我尝试扩展 NSManagedObject,但由于 NSManagedObject 是非泛型的,所以我无法返回特定的类类型。

是否可以将所有这些组合到一个扩展变量中,同时仍保留像当前那样返回类类型的能力?

extension Account {
var temp: Account {
return core.temporaryContext.object(with: self.objectID) as! Account
}
}


extension Transaction {
var temp: Transaction {
return core.temporaryContext.object(with: self.objectID) as! Transaction
}
}


extension Category {
var temp: Category {
return core.temporaryContext.object(with: self.objectID) as! Category
}
}

最佳答案

您想将功能放入协议(protocol)中,这是可能的,因为我们谈论的是计算属性而不是存储属性(不能通过协议(protocol)添加)。

首先编写空协议(protocol)和希望协议(protocol)实现的扩展,然后将扩展所需的内容添加到协议(protocol)定义中。

public protocol FetchRequestProtocol: class {
var objectID: NSManagedObjectID { get }
}

protocol TemporaryProtocol: FetchRequestProtocol {
var core: Core { get }
}
extension TemporaryProtocol {
var temp: Self {
return core.temporaryContext.object(with: self.objectID) as! Self
}
}

extension Account: TemporaryProtocol {}
extension Transaction: TemporaryProtocol {}
extension Category: TemporaryProtocol {}

关于swift - 合并 NSManagedObject 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51794351/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com