0

基本的に、3つの異なるCore Dataエンティティ(、、A)がありB、 sのセットとsのセットが含まれています。ただし、これら3つのエンティティは互いにまったく異なり、互いの子にアクセスするための一般的な方法や、ビューに表示される値はありません。CABBC

これらの3つのエンティティをNSOutlineViewに表示しようとしています。おそらく他の解決策もありますが、私は2つの異なる解決策を思いつきました:

  1. NSOutlineViewDataSourceプロトコルを実装し、各エンティティを異なる方法で処理します。

  2. クラスをカテゴリに統合し、NSOutlineViewが使用する一般的な(一時的な)メソッド/プロパティを追加します。これらのメソッド/プロパティは、モデルエンティティのプロパティから実際の値を取得します。

2番目のオプションを選択し、子のゲッターと表示値を追加しました。ただし、この方法では、Key-Value監視は機能しなくなり、モデルの変更はビューに反映されません。理由はわかりますが、これを正しい方法で解決する方法がわかりません。実際のモデル値の変更を通知してビューに転送する方法を考えていました。

これらの通知を転送する簡単な方法はありますか、それとも他の方法を検討する必要がありますか?

つまり、NSOutlineViewにさまざまな種類のエンティティを表示する必要があり、モデルを台無しにしたくありません。

4

2 に答える 2

0

何度か試行錯誤した結果、カスタムデータソースの作成は非常に簡単であることがわかり、最初の選択肢を選択することにしました。また、ドラッグアンドドロップのサポートにより、これははるかに自然な方法に感じられます。

唯一の問題は、outlineView:setObjectValue:forTableColumn:byItem:列識別子の参照を指定する必要があるということでした。間接的な依存関係は常に避けるべきものだと思いますが、これをうまく機能させることと比較すると、これは小さな問題です。

于 2011-04-18T19:34:49.023 に答える
0

リレーションシップを使用A->B->CしてオブジェクトAをフェッチし、それらをアウトラインビューで表示することはできませんか?

于 2011-03-29T12:01:03.163 に答える