2016-07-14 55 views
0

我有Event模型與startDateendDate。我想將這個事件分爲3類。使用基於時間的瞬態屬性與NSFetchedResultsController

  • 電流:的startDate <今天<結束日期
  • 即將來臨:今天<的startDate
  • 過去:結束日期<今天

我做了名爲status瞬態特性包含上述邏輯,並以此作爲參數在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種性質決定,所以它不能由只startDateendDate,但兩者是排序。

解決此問題的最佳方法是什麼?我已經考慮讓這種狀態變成非暫時性的,但是這個值每天都會更新,我認爲讓它變成非瞬態是很奇怪的。

回答

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.

相關問題