重新计算Core Data MO中另一个属性的每次更改的属性

时间:2009-08-08 15:59:46

标签: cocoa core-data

我在核心数据管理对象中有一个属性,我正在尝试根据其他属性进行更新。

如何实现每次更改原始属性时调用的方法?

awakeFromInsertawakeFromFetch显然无效。 我见过keyPathsForValuesAffectingValueForKey,但我真的不明白如何使用它。

非常感谢

1 个答案:

答案 0 :(得分:2)

你走在正确的轨道上。假设您有两个属性:foobarbar基于foo计算。为此,您需要实现+keyPathsForValuesAffectingBar方法:

+ (NSSet *)keyPathsForValuesAffectingBar {
    return [NSSet setWithObject:@"foo"];
}

现在,每次foo更改时,绑定到bar的任何对象都会自行更新。

显然,如果你要缓存bar的值,这不会有太大的好处,因为你需要实际重新计算和重新计算它。但是,除非您正在进行一些严格的核心计算以确定bar,否则每次调用bar方法时,最好只计算-bar