これはかなり広い質問です。NSMutableDictionary
モデル データは、コア データ エンティティ、独自に作成したカスタム オブジェクトなど、何らかのモデル オブジェクトに常に格納する必要があります。NSTreeController
またはNSOutlineView
インスタンスにデータを保存しないでください。これらはモデル オブジェクトではありません。
アプリの残りの部分に Core Data を使用していて、アウトライン ビューによって操作されるデータを永続化する必要がある場合、これは良い選択ですが、単純な要件しかない場合はやり過ぎかもしれません。
アウトライン ビューに表示される内容を制御するには、データソースNSTreeController
に応答する独自のコントローラー オブジェクトNSOutlineView
とデリゲート プロトコルを使用するか、独自のコントローラー オブジェクトを使用できます。実際には、アイテムがグループ アイテムであるかどうかなど、NSOutlineView
デリゲート メソッドによってのみ制御できるものがあるため、両方を使用できます。
私の個人的な経験では、NSTreeController
非常に単純なタスクを超えて対処するのが非常に難しいことがわかりました。今ではそれを長く使用しています。自分のコントローラーでデータソース メソッドを使用する方がはるかに簡単です。
アウトライン ビューの内容を変更する限り、常にコントローラーを介してモデルを変更する必要があり、ビューを直接更新しないでください。-add:
コントローラーなどにメソッドを実装するか、使用している場合はの-add:
メソッドをNSTreeController
使用します。
次に、ビューのコントローラーがモデルの変更を検出し、ビューに更新を要求する必要があります。ビュー コントローラーとモデル コントローラーは同じオブジェクトにすることができますが、そうである必要はありません。Key-Value Observingは、コントローラーにモデルの変更を通知できる便利なテクノロジーです。
以下は、役立つと思われる Apple のサンプル コードです。
http://developer.apple.com/mac/library/samplecode/SourceView/
http://developer.apple.com/Mac/library/samplecode/AbstractTree/