1

バインディング/コア データと互換性があり、データのコレクションを表すカスタム ビューを作成しています (NSTableView 風)

ユーザーが変更した後、ビューがコレクション内の要素の特定のサブセット (現在の選択以外) を参照できる方法はありますか?

ちょっとしたコンテキスト:
ビューは、2D 空間にユーザーが移動できる多数のボックスを表示します。各ボックスは、モデル内のレコードに対応しています。いくつかは一度に移動できますが、各ボックスのデルタ値が同じであることに依存することはできません (したがって、選択した各オブジェクトにデルタを追加する必要はありません)。

ビューがそのIDを各ボックスに関連付けることができるように、NSArrayControllerによってコンテンツ配列の各要素に割り当てられたIDのようなものを探していると思います。私が最初に考えたのは、コンテンツ配列でインデックスを使用することでしたが、これは元に戻す/やり直しによって台無しになる可能性があります。NSArrayController をサブクラス化して、各モデル項目の ID を自動生成するようにできますが、cocoa はすでにこのようなことを行っているのでしょうか? 何かが欠けているような気がします。

4

2 に答える 2

1

私は元々、コンテンツ配列の各要素を (Peter が示唆するように) ビューに保存しようとしたが、キーとしてディクショナリに保存していたことに言及する必要がありました。

ビュー内のオブジェクトがディクショナリ内のキーと一致しなかったので、これは NSArrayController がモデル オブジェクトを表すために使用するプロキシ オブジェクトを変更したことを意味すると考えました。

ただし、NSDictionary はそのキーをコピーすることが判明したため、オブジェクトの特定のインスタンスを別のインスタンスに関連付けたい場合には適していないようです。

NSMapTable はより柔軟な従兄弟であり、そのキーをコピーしないように構成できます。

于 2010-08-20T20:22:45.940 に答える
0

オブジェクト自体を参照しないのはなぜですか?それらをセットまたは配列のどちらか適切な方に保持できます。

ある種の識別子が本当に必要な場合:何のために?あなたはそれをどうするつもりですか?

于 2010-08-20T06:34:04.587 に答える