我的Event
模型包含startDate
和endDate
。我想将此事件分为3类。
我创建了一个名为status
的瞬态属性包含上述逻辑,并将其用作NSFetchedResultsController
NSFetchedResultsController(fetchRequest:fetchRequest, managedObjectContext:self.managedObjectContext,sectionNameKeyPath: " status",cacheName:nil)
当我运行时,我收到此错误,告诉我使用section作为排序描述符。
CoreData:error:(NSFetchedResultsController)获取的对象at 索引2具有无序部分名称' 1。对象必须按顺序排序 部分名称'
然后我在排序描述符中设置它并得到此错误,因为瞬态不能用作排序描述符。
由于未捕获的异常而终止应用 ' NSInvalidArgumentException',原因:'未找到密钥路径状态 实体'
问题在于此部分是根据2个属性确定的,因此它不能仅按startDate
或endDate
排序,而是两者兼而有之。
解决此问题的最佳方法是什么?我已经考虑过将此状态设置为非瞬态,但是这个值每天都会更新,我认为让它非瞬态变得有些奇怪。
答案 0 :(得分:0)
NSFetchedResultsController
无法对瞬态属性进行排序(这是常见情况)。后端必须将您的排序请求转换为SQL查询,并且查询无法访问瞬态属性。您要么必须使状态为非瞬态,要么您不能使用NSFetchedResultsController
。
有关详情,请参阅Core Data Programming Guide: Advanced Topics: Fetch Predicates and Sort Descriptors。
此外,您无法使用SQLite商店对瞬态属性进行排序。