在我的应用程序中,我有一个任务列表(不,它不仅仅是另一个待办事项应用程序),我UITableView
使用NSFetchedResultsController
. 以下是相关的初始化代码:
NSSortDescriptor *dueDateSortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"due" YES];
NSSortDescriptor *completionSortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"completed" ascending:YES];
[fetchRequest setSortDescriptors:[NSArray arrayWithObjects:completionSortDescriptor, dueDateSortDescriptor, nil]];
_fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:context sectionNameKeyPath:@"completed" cacheName:nil];
这样做是对任务进行排序,使我在顶部有一个不完整的任务部分,将首先到期的任务排序在顶部,然后将到期的任务进一步向下排序。这一切都有效。
但是,这意味着第二部分,即已完成任务的部分,也是这样排序的,因此最早到期的任务在最前面。我想要做的是更改它,以便第二部分以相反的方式排序(按降序排列),但第一部分保持按升序排序。这甚至可能吗?我该怎么办?
我为什么要这样做:它目前的工作方式,第二部分顶部的任务(因此也是最明显的)是很久以前完成的任务。用户更有可能希望查看最近完成的任务(如果不小心选中了则取消选中),并且可能具有较近截止日期的任务是最近完成的。如有必要,我很乐意为 Core Data 任务对象添加一个单独的完成日期字段(这还不是一个运输应用程序,所以我可以随意更改数据格式)。