2016-07-14 3 views
0

startDateendDateEvent 모델이 있습니다. 이 이벤트를 3 가지 카테고리로 정렬하고 싶습니다.NSFetchedResultsController로 시간 기반 임시 속성 사용

  • 현재 : startDate를 < 오늘 < endDate가
  • 다가오는 : 오늘 <의 startDate
  • 과거 : endDate가 나는 논리 위에 포함하고 매개 변수로 사용 status라는 일시적인 속성을 만든

< 오늘 in NSFetchedResultsController

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

실행할 때 section을 sort descriptor로 사용하라는 오류가 발생했습니다.

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

다음이 정렬 설명자에서 설정하고 transient를 정렬 설명자로 사용할 수 없기 때문에이 오류가 발생했습니다.

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.