核心数据划分两个值

时间:2011-04-24 06:02:55

标签: cocoa core-data interface-builder cocoa-bindings accessor

在我的项目中,完全使用Core Data和绑定编写,我有两个包含浮点值的文本字段。我想制作第三个文本字段,即第一个字段除以第二个字段。使用Core Data进行此操作的最佳方法是什么?我应该为第三个字段创建一个自定义访问器吗?

1 个答案:

答案 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通知。因此,如果您有一个绑定它的字段,该字段将显示新的计算值。当你需要显示一个值取决于其他键的键时,这是一个方便的技巧。