コアデータフェッチ結果コントローラとカスタムセクションヘッダー
-
23-09-2019 - |
質問
私は共通とNSFetchedResultsControllerテーブルの行を管理するための基本的な使用に精通しているが、私は、興味深い問題があります。
私のデータは、次のような構成されています。スケジュール<--- >>デイ<--- >>ルート。私は現在、スケジュールの作成と削除を管理フェッチコントローラとスケジュールを持っているテーブルビューを持っています。私は今、ルート/日のテーブルビューを作成したい。
私はカスタムセクションヘッダーのすべての行の上にルートをリストアップし、作成したいと考えている当該日内の情報に対応しています。私はすべてのルートを取得した後、そこにそれぞれの日には逆の関係によってそれらを区画することによって一緒におそらくハック何かができたが、私はその後、私はときに、テーブルを更新するためのフェッチコントローラデリゲートメソッドを利用することができませんことを心配しています管理対象オブジェクトの変更ます。
んの誰もがこれでの経験がありますか?前方に移動する方法上の任意のアイデア?
感謝します。
解決
NSFetchedResultsControllerは、この目的のために設計されています。
あなたのNSFetchedResultsControllerを初期化するときは、sectionNameKeyPathを指定することを検討してください。このプロパティを使用すると、自動的にあなたのためのセクションを生成する必要が正確に何である。
:次のようにあなたのケースでは、私はどうなります
NSEntityDescription: @"Route"
NSPredicate: @"day = %@"
NSFetchedResultsController: sectionNameKeyPath:@"route.day"
あなたが明確化のためのより多くのコードが必要な場合は、私に教えて、私が何を意味するか見ます。
他のヒント
あなたはルートを表現するために作成されNSSetを通じて多くの関係を次のように調査する必要があります。
:日 - >スケジュールがisScheduledとして、あなたがあなたの関係isTraversedOnの名前と仮定し、そして、それはようなものになるだろうRoute *route=[self.fetchedResultsController.fetchedObjects objectAtIndex:0];
for (Day *day in route.isTraversedOn) {
Schedule *schedule = day.isScheduled;
NSLog(@"route is traversed on %@ according to schedule %@",day.name,schedule.name);
}
NSSetはただ実際のIDの指定されたオブジェクトのを節約できます。