1

私は NSArrayController を持っており、KVO を使用してその選択方法の古い/新しい値を観察しています。

これは完全に機能します (通常、選択が変更されたときにトリガーされます)。ただし、変更辞書内の項目は、古い/新しい選択されたオブジェクトではなく、すべて null です。[arrayController selection] は引き続き適切なオブジェクトを返しますが、可能であれば以前に選択したオブジェクトにもアクセスできるようにしたいと考えています (私の回避策は、代わりに選択したインデックスを観察し、それが機能するかどうかを確認することです)。

私が思いついた唯一の理由は、おそらく NSArrayController がプロキシ オブジェクトであるためです。

これは予想される動作ですか、それとも何かおかしなことが起こっているのでしょうか?

編集:インデックスだけを観察しようとしましたが、それもうまくいきませんでした。古いキーと新しいキーの両方が引き続き null として表示されます。

4

3 に答える 3

3

mmalc の Cocoa バインディング ページには次のように書かれています。

変更辞書には古い値と新しい値が含まれていません。これはあなたのせいではなく、コントローラーのバグによるものです。このバグは当分の間修正されません。

于 2011-10-27T00:33:13.990 に答える
0

を使用NSKeyValueObservingOptionNewしていますか?NSKeyValueObservingOptionOldのオプションでaddObserver:forKeyPath:options:context:

コードを見せていただければ助かります。

于 2009-08-03T06:36:56.777 に答える
0

(バインディングではなく) プレーンな KVO の場合は、selection プロパティではなく selectedObjects プロパティを観察してみてください。これにより、Cocoa バインディング システムで使用されるプロキシ オブジェクトの代わりに、オブジェクトの単純な配列が得られます。そのように、古いキーと新しいキーは、選択の変更を正確に反映する必要があると思います。

于 2008-11-11T01:48:09.380 に答える