私はコアデータ内にタスクのリストを持っています。私はそれらをNSFetchedResultsControllerを使ってUITableViewに取り込みます。一時的なsectionNameKeyPathとNSSortDescriptor NSFetchedResultsController
私はカスタムオーダーでカスタムセクションを必要とする:延期
- OVERDUE
- ACTIVE
- 進行中の
- は、タスクが行くべきかのセクションを判断するには
を完了しました私はtで計算された導出された一時的な属性を使用しています彼は相対的なオブジェクトの他の属性に基づいて飛ぶ。
残念ながら、フェッチ要求で使用されるソート記述子として派生値を渡すことはできません。これは、フェッチでは、フェッチするように依頼されているデータをすでに持っているためです。チキン&卵。
私はそれができない理由を理解していますが、それは私が問題を解決するのに役立ちません!
私が試してみた:
サブクラスNSFetchedResultsController 'をcustomise creation of sections and index titles' に。たぶん私はこれを間違ってやっているかもしれませんが、これはちょうどセクションの名前と順序を変えます。
セクションごとに配列を配置し、それらをテーブルに供給します(clunky、 はまだ完全に動作します)。
実行中の&のタスクを削除します(これは機能しますが、理想的ではありません)。こうすることで、私はdueDateでソートして、一時値を使ってsectionNameKeyPathを駆動することができます。
もっと良いアイデアはありますか?すでにこのような質問がいくつかありますが、どれもきちんとした解決策にはなりません。
ありがとうございます!
乾杯
コアデータからすべてのタスクを既にフェッチしている場合は、タスクごとに余分な属性を保存することができます。また、「オンザフライ」のタスクがセクションを変更した場合、コアデータで更新することもできます - アニメーションは、controllerWillChangeContentによって正しいセクションに再配置されます:デリゲートメソッド?または私は何かを逃していますか? –