我在核心数据管理对象中有一个属性,我正在尝试根据其他属性进行更新。
如何实现每次更改原始属性时调用的方法?
awakeFromInsert
和awakeFromFetch
显然无效。
我见过keyPathsForValuesAffectingValueForKey
,但我真的不明白如何使用它。
非常感谢
答案 0 :(得分:2)
你走在正确的轨道上。假设您有两个属性:foo
和bar
,bar
基于foo
计算。为此,您需要实现+keyPathsForValuesAffectingBar
方法:
+ (NSSet *)keyPathsForValuesAffectingBar {
return [NSSet setWithObject:@"foo"];
}
现在,每次foo
更改时,绑定到bar
的任何对象都会自行更新。
显然,如果你要缓存bar
的值,这不会有太大的好处,因为你需要实际重新计算和重新计算它。但是,除非您正在进行一些严格的核心计算以确定bar
,否则每次调用bar
方法时,最好只计算-bar
。