ここで行うことは、カスタムNSTreeController
サブクラスを作成することです。これが、これがあなたがしたい変更のための完璧な場所である理由です:
- あなたが言ったように、それはモデルにはありません。
- ビューとは何の関係もありません-完全に透明です。
- 基本的に必要なのは、保存されたデータから表示データを作成することです<-これはコントローラーのタスクです。
幸いなことに、CocoaのControllerクラスは非常に強力であり、同時に非常に単純です。-arrangedObjects
あなたにとっては、メソッドをオーバーライドするだけで十分なはずです。述語の適用や並べ替えなどの多くの便利なことを行うため、デフォルトの実装を再利用します。これは次のようになります。
- (id)arrangedObjects {
id root = [super arrangedObjects];
// "root" is something like a NSTreeNode but not quite yet
NSTreeNode *newRoot = [NSTreeNode treeNodeWithRepresentedObject: nil];
[[newRoot mutableChildNodes] setArray: [root childNodes]];
// Do your customizations here
return newRoot;
}
返されるオブジェクトはクラスのNSTreeNode
ものです。変更を行う方法については、ドキュメントを参照してください。