1

我有一个 NSArrayController,我正在使用 KVO 来观察它的选择方法的旧/新值。

这完美地工作(在选择更改时触发,通常情况下),除了更改字典中的项目全部为空而不是旧/新选定对象。[arrayController selection] 仍然返回正确的对象,但如果可能的话,我希望能够访问先前选择的对象(我的解决方法可能是观察选定的索引,看看它是否有效)。

我想出的唯一可能的原因可能是因为 NSArrayController 是一个代理对象。

那么这是预期的行为,还是发生了一些奇怪的事情?

编辑:我尝试只观察索引,但这也不起作用。旧键和新键仍然显示为空。

4

3 回答 3

3

mmalc 的 Cocoa 绑定页面说:

更改字典不包含旧值和新值。这不是你的错,这是由于控制器中的错误。在可预见的将来不会修复此错误。

于 2011-10-27T00:33:13.990 回答
0

对于普通的 KVO(与绑定相反),请尝试观察 selectedObjects 属性而不是 selection 属性。这将为您提供一个简单的对象数组,而不是 Cocoa 绑定系统使用的代理对象。我相信旧/新键应该以这种方式准确反映选择的变化。

于 2008-11-11T01:48:09.380 回答
0

您是否使用NSKeyValueObservingOptionNew, 和NSKeyValueObservingOptionOld的选项addObserver:forKeyPath:options:context:

如果您可以向我们展示一些代码,那将会很有帮助。

于 2009-08-03T06:36:56.777 回答