6

iTunes ジャンル ブラウザのスタイルで、コア データ モデルへのシンプルなインターフェイスを作成しようとしています。

次の 3 つのエンティティを使用してモデルをセットアップしていますGenre <-->> Artist <-->> Album

それぞれを単純に NSTableView に結び付けたいのですが、NSArrayController からの子関係へのアクセスは KVC に準拠していないように見えます。そのため、選択した Genre オブジェクトを ArtistController に伝達するのが困難です。

これどうやってやるの?カスタムサブクラス化なしでIB内でも可能ですか?

後世のために編集: 私はいくつか間違ったことをしていました。

  • 子コントローラーは、独自のバインディングを通じて managedObjectContext について知る必要があります。
  • 子コントローラーはモードではなく、クラスとして動作する必要があります。EntityNSMutableDictionary
  • 最後に、子コントローラーはデータを準備しません。Content Setバインディングを介して、親から取得します。コントローラー キーselectionと、子に接続するモデル キー パスを使用します。

ふぅ。ブライアンの回答とこの MacResearch チュートリアルの両方が、私のエラー (およびどの部分が正しかったか) を判断するのに役立ちました。

4

1 に答える 1

4

私がおそらくとるアプローチは、テーブル ビューごとに個別の NSArrayController を用意し、1 つのアレイ コントローラーのコンテンツを別のアレイ コントローラーの選択に基づくものにすることです。

たとえば、使用可能なジャンルのリストを表示するテーブル ビュー A があるとします。そのため、アレイ コントローラー A があり、そのコンテンツは管理対象オブジェクト コンテキストに接続されています。

次に、テーブル A で選択されたジャンルの利用可能なアーティストを表示するテーブル ビュー B があるとします。このテーブルには独自の配列コントローラー B があり、コントローラー B のコンテンツ配列がバインドされているため、IB の「コントローラー キー」フィールドはコントローラ A の「選択」キーに設定され、モデル キーは「artists」です (これは、Genre エンティティが Artist エンティティに対して「artists」という名前の対多関係を持っていることを前提としています)。

次に、同じ原則を 3 番目のテーブル ビュー + コントローラーに適用して、選択したアーティストのアルバムを表示できます。

この種のセットアップの一般的な用語は「マスター/ディテール インターフェイス」であり、このリンクの Apple のドキュメントで概説されています。

于 2009-11-09T00:02:28.930 に答える