CoreDataとTreeController

単なるテーブル情報を、なんらかの階層構造で表示したいケースはそれなりにありそう。
単純に表示するならNSArrayControllerで簡単。
でも階層構造を入れ始めるとなると悩み始める。
NSTreeControllerがNSOutlineViewに対応するものとして存在するけど、あまり使い方が見えてこない。
CoreDataが階層構造ならばそのままだけど、上記のケース(CoreDataはテーブル、表示するときに階層を入れたい)では、定石はないと思う。
データの複雑性や入れたい階層の特徴により変わってくると思うけど、自分の理解を深めるために1つ作ってみた。

お題は、アドレスブック
firstName, lastName, emailという属性の表をlastNameの頭文字で階層化して評するケース

サンプルプロジェクト:AddressBookProject

テーブル表示
テーブル表示

 

階層表示

階層表示

 

自分で作ってみてよくわかった。

このケースではダミーの階層を持つ(CoreDataでない)モデルを入れたけど、(CoreData)モデル内で簡単に辿れるならば、Category等で新しいAPIをCoreDataモデルに追加するのもアリだと思う。
その辺りは、複雑性とかを考慮してその都度考えないといけないと思う。

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.