2013-06-08 12 views
7

コアデータモデル内にArticleオブジェクトが格納されているとします。各記事は、ユーザによってどれだけ多くの記事が読み込まれたかを示す読み取り進行属性を維持する。ユーザーが記事を完全に読むと、その記事は「読む」とマークされます。それ以前は「未読」と表示されます。コアデータを使用してNSTableViewでグループ行を作成するNSArrayController

CoreDataを使用して保存されたArticleオブジェクトをすべて含むNSArrayControllerにNSTableViewがバインドされました。未読の記事をすべて「未読」のグループに表示し、すべての記事を「読み取り」グループの下に表示するようにします。

私はNSTableViewDelegateで

- (BOOL)tableView:(NSTableView *)tableView isGroupRow:(NSInteger)row 

方法を知っています。しかし、このことは、NSArrayController内でグループ化するように昇格される "Read"と "Unread"という実際の行を持たなければならないことを暗示します。 NSArrayControllerにCoreDataから引き出されたArticleオブジェクトが含まれているので、どうやってこれをやりますか?

NB:これはここで私の最初の質問です、と私はココアに新たなんだ、私に簡単に移動してください:)

+0

2歳でまだ答えがありません。その間に解決策を見つけましたか? –

+0

私もそのような機能を探していますが、解決策が見つかりませんでした。あなたはそうすることができましたか?はいの場合は、その達成方法をお知らせください。 –

+0

1つの解決方法は、このようなサードパーティFRCを使用することです。https://github.com/konstantinpavlikhin/KSPFetchedResultsController – CryingHippo

答えて

0

私はNSTableViewとNSArrayControllerはするのではなく、グループ化を作成するNSOutlineviewとNSTreeControllerを使用することをお勧め。

0

NSArrayControllerには、グループ行を含め、達成したいNSTableViewの内容を正確に保持するカスタムクラスインスタンスを手動で入力する必要があります。コントローラは、正しい順序で記入する必要があります。そのため、グループヘッダーオブジェクト、いくつかのデータオブジェクト、新しいヘッダーオブジェクトなどから開始する必要があります。カスタムクラスには、次のプロパティが含まれている必要があります。

グループヘッダーの文字列値。行がグループヘッダーでない場合はnilです。

ブール値isGroupHeader。簡単なテーブルビューに必要:isGroupRow:実装。

通常のデータのNSManagedObject値。行がグループヘッダーの場合はnilです。

これで、すべてのNSTableViewデリゲートを実装して、適切にグループ化されたテーブルビューを取得するためのすべてのツールが用意されています。