我有一个循环查看数据数组的tableview。数据是一组可能附加提醒时间的联系人。例如:
现在,它以递增的方式通过核心数据属性reminderDate
对表格视图进行排序。它工作半正确。唯一的问题是我希望将NULL
reminderDate
的项目投放到NSFetchedResultsController
的末尾而不是开头。
理想情况下,它看起来像这样:
我无法使用比较NSSortDescriptor
,因为NSFetchedResultsController
不支持。此外,我不想在之后执行排序我从NSFetchedResultsController
获得结果,而是在我进行查询之前。
以下是我使用的当前代码:
NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"User"];
NSSortDescriptor *sortByDate = [NSSortDescriptor sortDescriptorWithKey:@"reminderDate" ascending:YES];
[fetchRequest setSortDescriptors:@[sortByDate]];
self.fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest
managedObjectContext:context
sectionNameKeyPath:nil
cacheName:nil];
我相信我应该添加另一个sortDescriptor,但没有任何工作正常。
答案 0 :(得分:5)
我最终做了他们在这里提到的事情:Using NSSortDescriptor to keep blank values down the list
我创建了一个BOOL值,表示用户是否有提醒集。所以,我通过提醒,然后按日期排序。
NSSortDescriptor *sortByDate = [NSSortDescriptor sortDescriptorWithKey:@"reminderDate" ascending:YES];
NSSortDescriptor *sortByHasReminder = [NSSortDescriptor sortDescriptorWithKey:@"hasReminder" ascending:NO];
效果很好。作为一个数据库爱好者,我讨厌有不必要的字段,但这是我用NSSFetchedResultsController做的最好的。