Можно ли получить доступ к предыдущему / текущему значению прокси-объекта с помощью KVO? - PullRequest
1 голос
/ 11 ноября 2008

У меня есть NSArrayController, и я использую KVO для наблюдения старых / новых значений его метода выбора.

Это работает отлично (срабатывает, когда выбор изменяется, как обычно), за исключением того, что все элементы в словаре изменений являются нулевыми вместо того, чтобы быть старым / новым выбранным объектом. [arrayController selection] по-прежнему возвращает правильный объект, но я хотел бы иметь возможность получить доступ к ранее выбранному объекту, если это возможно (мой обходной путь, вероятно, будет вместо этого наблюдать за выбранным индексом и посмотреть, работает ли он).

Единственная возможная причина, по которой я это придумал, возможно, заключается в том, что NSArrayController является прокси-объектом.

Так это ожидаемое поведение или происходит что-то странное?

РЕДАКТИРОВАТЬ: Я пытался наблюдать только индексы, но это тоже не сработало. И старые, и новые ключи все еще отображаются как ноль.

Ответы [ 3 ]

3 голосов
/ 27 октября 2011

Страница привязки какао mmalc говорит:

Словарь изменений не содержит старых и новых значений. Это не ваша вина, это связано с ошибкой в ​​контроллере. Эта ошибка не будет исправлена ​​в обозримом будущем.

0 голосов
/ 03 августа 2009

Используете ли вы NSKeyValueObservingOptionNew и NSKeyValueObservingOptionOld в опциях addObserver:forKeyPath:options:context:?

Если бы вы могли показать нам некоторый код, это было бы полезно.

0 голосов
/ 11 ноября 2008

Для простого KVO (в отличие от привязок) попробуйте наблюдать свойство selectedObjects вместо свойства selection. Это даст вам простой массив объектов вместо прокси-объектов, которые используются системой привязок Какао. Я считаю, что старые / новые ключи должны точно отражать изменение выбора таким образом.

...