2016-07-14 7 views
0

startDateendDateEventモデルがあります。このイベントを3つのカテゴリに分類したいと思います。NSFetchedResultsControllerで時間ベースの一時的プロパティを使用する

  • 電流:たstartDate <今日< endDateに
  • 今後:今日<たstartDate
  • 過去:endDateに私はロジックの上に含まれており、パラメータとしてこれを使用statusと呼ばれる過渡特性を作っ

<今日in NSFetchedResultsController

NSFetchedResultsController(fetchRequest: fetchRequest, managedObjectContext: self.managedObjectContext, sectionNameKeyPath: "status", cacheName: nil)

私が実行すると、セクションをソート記述子として使用するように指示するエラーが表示されます。

CoreData: error: (NSFetchedResultsController) The fetched object at index 2 has an out of order section name '1. Objects must be sorted by section name'

私は、ソートの記述でこれを設定すると、過渡ソート記述子として使用することができないので、このエラーを得ました。

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'keypath status not found in entity '

問題このセクションでは、2つの特性から決定されているので、ちょうどstartDate又はendDateによってソートすることができるが、両方はできません。

この問題を解決する最善の方法は何ですか?私はこの状態を一過性にすることを検討してきましたが、この値は毎日更新されています。私はそれを非過渡期にするのは変です。

答えて

0

NSFetchedResultsControllerは、SQLiteによってサポートされている(通常の場合)一時的なプロパティではソートできません。バックエンドはソート要求をSQLクエリに変換する必要があり、クエリは一時的なプロパティにアクセスできません。ステータスを非一時的にするか、NSFetchedResultsControllerを使用することはできません。

詳しくはCore Data Programming Guide: Advanced Topics: Fetch Predicates and Sort Descriptorsをご覧ください。

In addition you cannot sort on transient properties using the SQLite store.

関連する問題