当我使用swift生成NSManagedObject子类时,属性类型都是@NSManaged,这意味着我无法观察它们。在Cocoa应用程序中使用绑定时这是一个问题,因为更新属性经常需要“更新”其他属性。
例如,如果我将此方法添加到我的NSManagedObject子类:
dynamic var ratePerPoint: Double {
guard pointsPerMonth > 0 else { return 0 }
return monthlyRate / Double(pointsPerMonth)
}
然后重要的是,每当我更新pointsPerMonth变量(它是核心数据对象的一部分)时,我发送didChangeValueForKey("ratePerPoint")
消息。
如果不这样做,则UI绑定不会正确更新。
答案 0 :(得分:0)
如果ratePerPoint
是计算属性,则必须在NSManagedObject子类中实现keyPathsForValuesAffectingRatePerPoint
。
+ (NSSet *)keyPathsForValuesAffectingRatePerPoint {
return [NSSet setWithObjects:@"monthlyRate", @"pointsPerMonth", nil];
}