1

NSTableViewのNSDictionaryにいくつかのエントリを表示したいといういくつかのシナリオに遭遇しました。(NSDictionaryControllerを使用するという私の本能は、すべてのオブジェクトにcopyWithZoneを実装させる必要性によって常に失敗します。これは、使いやすさに致命的な不条理な要件であることがわかります...)

代わりに、テーブルのそれぞれの列を配列内のオブジェクトのさまざまなプロパティにバインドする目的で、NSArrayControllerをNSDictionaryのallValuesプロパティにバインドしようとしています。ただし、アレイコントローラのコントローラキーとモデルキーパスのプロパティを使用して、Cocoa内でこのバインディングを指定する正しい方法を見つけることができません。

配列をallValuesに直接バインドしようとすると、配列コントローラーのarrangedObjectsプロパティは常に空になります。オブジェクトがディクショナリに追加された場合でも、追加が[dictionary willChangeValueForKey:@"allValues"]と[dictionarydidChangeValueForKey:@ 「allValues」]は、オブジェクトを追加した後、配列コントローラーでsetContent:を呼び出した後でも呼び出します。

もちろん、私はこのStackOverflowスレッドを見つけました:

NSDictionaryの「allValues」配列へのバインド

...そして[モデルキーパス]フィールドでさまざまなバージョンの@"@allValues"を試しましたが、望ましい結果が得られたものはありませんでした。

ここに私の質問があります:ArrayControllerOneをオブジェクトにバインドし、ArrayControllerTwoをArrayControllerOne.selection内のNSDictionaryプロパティ(「インスタンス」と呼ばれる)のallValuesプロパティにバインドしたい場合、コントローラーキーに何を入力する必要がありますかモデルキーパスフィールド?

前もって感謝します...

4

1 に答える 1

2

dict。@allValues(引用符なし)を使用して、配列コントローラーのコンテンツ配列をディクショナリのallValuesにバインドできることがわかったため、1つ見逃したに違いありません。ここで、dictはディクショナリのプロパティ名です。なぜこれが機能するのか、私にはわかりません-これに関するドキュメントが見つかりません。

ところで、新しいキーと値のペアを辞書に追加する場合は、self.dict=_dict;を使用します。テーブルビューを更新します。

于 2012-09-21T04:57:37.610 に答える