Swift 组合NSManagedObject类
我有多个Swift 组合NSManagedObject类,swift,swift4,Swift,Swift4,我有多个NSManagedObject类,我用一个临时变量扩展这些类,从另一个上下文返回其实例。下面的方法工作得很好,但是对于很多类来说有点乏味 我试图扩展NSManagedObject,但无法返回特定的类类型,因为NSManagedObject是非泛型的 是否可以将所有这些组合到一个扩展变量中,但仍能像当前一样返回类类型 extension Account { var temp: Account { return core.temporaryContext.object
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
}
}
您希望将功能放入一个协议中,这是可能的,因为我们讨论的是一个计算属性,而不是一个存储属性(不能通过协议添加) 首先编写空协议和希望协议实现的扩展,然后将扩展所需的内容添加到协议定义中
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 {}