我有 Event
型号 startDate
和 endDate
. 我想将此事件分为3类 .
-
当前:startDate <今天<endDate
-
即将到来:今天<startDate
-
过去:endDate <今天
我做了一个名为 status
的瞬态属性包含上面的逻辑并在 NSFetchedResultsController
中使用它作为参数
NSFetchedResultsController(fetchRequest:fetchRequest,managedObjectContext:self.managedObjectContext,sectionNameKeyPath:“status”,cacheName:nil)
当我运行时,我收到此错误,告诉我使用section作为排序描述符 .
CoreData:error:(NSFetchedResultsController)索引2处的获取对象具有乱序部分名称“1” . 对象必须按节名称排序'
然后我在排序描述符中设置它并得到此错误,因为transient不能用作排序描述符 .
由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:'在实体中找不到密钥路径状态'
问题是此部分是从2个属性确定的,因此它不能仅按 startDate
或 endDate
进行排序,而是两者兼而有之 .
解决这个问题的最佳方法是什么?我已经考虑过将这个状态设置为非瞬态,但是这个值每天都会更新,我认为让它非瞬态变得有些奇怪 .
1 回答
如果由SQLite支持,则无法对瞬态属性进行排序(这是常见情况) . 后端必须将您的排序请求转换为SQL查询,并且查询赢得't have access to transient properties. You either have to make status non-transient or you can' t使用
NSFetchedResultsController
.有关更多信息,请参阅Core Data Programming Guide: Advanced Topics: Fetch Predicates and Sort Descriptors .