特定のエンティティの単純なツリーで構成されるコア データ モデルがあり、これには 2 つの関係がparent
ありchildren
ます。にバインドされNSTreeController
たモデルを管理しています。NSOutlineView
NSTreeController
私の問題は、単一のルート オブジェクトが必要なことですが、これはアウトライン ビューに表示されるべきではなく、その子のみがアウトライン ビューのトップ レベルに表示されるべきです。NSTreeController
Interface Builderのフェッチ述語を に設定するとparent == nil
、ルート項目がアウトライン ビューの最上位項目として表示されることを除いて、すべて正常に動作します。
私のエンティティにはisRootItem
、ルート項目のみに当てはまる属性 があります。
私のモデルは次のようになります。
Node 1
|
+-Node 2
| |
| +-Node 5
|
Node 3
|
Node 4
アウトライン ビューは次のようになります。
(ソース: menumachine.com )
アウトライン ビューの最上位にノード 2、3、および 4 を表示する必要がありますが (ノード 1 は表示されません)、その親は「ノード 1」のままです。ノード 1 の値はYES
forisRootItem
で、他のすべてのノードの値は ですNO
。
ツリー コントローラーのフェッチ述語を に設定するとparent.isRootItem == 1
、ツリーが正しく表示されますが、新しいアイテムをトップ レベルに追加するとすぐに失敗します。これは、ツリー コントローラーが「見えない」ルート アイテムを親として割り当てないためです。新しいアイテム。
NSTreeController
この状況で/のNSOutlineView
組み合わせを機能させる方法はありますか?