0
我有一个NSArrayController(上述ItemsController),其保持为MyObject的阵列。这个控制器绑定到一个NSTableView,它有几列,都绑定到不同的属性。observeValueForKeyPath:称为对于每个属性,不只是观察到的属性
我想观察应用程序中其他位置的其中一个属性。
[[self itemsController] addObserver:self forKeyPath:@"selectedObjects.someProperty" options:NSKeyValueObservingOptionNew context:nil];
在回调:
-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
我收到称为每当在选择更改任何财产,但我只是想叫时someProperty在选定对象的变化。
当没有真正改变时,我怎样才能防止所有这些其他呼叫?
观察@ “selection.someProperty” 具有相同的结果。
我觉得这很难相信。无法观察对象的* all *属性。你如何改变这些属性?你正在接收什么'keyPath'和'change'字典?你是否明确地调用'-will/didChangeValueForKey:'或类似的方法?您是否覆盖KVC或KVO方法(例如'-setValue:forKey:')?数组控制器是否正在进行过滤或排序?是否启用了“automaticRearrangesObjects”?顺便说一句,毫无疑问,你应该通过'selection'和** not **'selectedObjects'来绑定。 –