在我的项目中,完全使用Core Data和绑定编写,我有两个包含浮点值的文本字段。我想制作第三个文本字段,即第一个字段除以第二个字段。使用Core Data进行此操作的最佳方法是什么?我应该为第三个字段创建一个自定义访问器吗?
答案 0 :(得分:2)
在执行计算的NSManagedObject子类中创建一个方法-thirdValue:
- (CGFloat)thirdValue
{
return value1 / value2; // should probably do a value2 != 0 check
}
然后+ class的keyPathsForValuesAffectingValueForKey:
+ (NSSet *)keyPathsForValuesAffectingValueForKey:(NSString *)key
{
NSSet *superSet = [super keyPathsForValuesAffectingValueForKey:key];
if ([key isEqualToString:@"thirdValue"])
return [[NSMutableSet setWithObjects:@"value1", @"value2", nil] unionSet:superSet];
return superSet;
}
这会将thirdValue设置为依赖于value1和value2。每当value1或value2发生变化时,也会有一个关于thirdValue的KVO通知。因此,如果您有一个绑定它的字段,该字段将显示新的计算值。当你需要显示一个值取决于其他键的键时,这是一个方便的技巧。