2

我有一个NSFetchedResultsController用来获取我的核心数据并填充表格的工具。

要对当前的数据进行排序,我使用以下代码:

NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"month" ascending:YES];
NSArray *sortDescriptors = @[sortDescriptor];

[fetchRequest setSortDescriptors:sortDescriptors];

月份是NSString一年中的一个月,因此目前按字母顺序对一年中的月份进行排序。

但我想要发生的是按最接近今天日期的顺序显示月份。

例如,如果今天的月份是四月,则四月将显示在顶部,然后是五月、六月、七月等。

任何帮助表示赞赏,谢谢!

4

1 回答 1

1

自定义描述符并不难,但我认为自定义 SortDescriptor 不适用于您的情况(核心数据排序描述符无法运行自定义代码 AFAIK)


无论如何:

实现描述符,传递给它一个自定义比较器块,返回 obj1 和 obj2 如何相互关联

示例代码:

id desc = [[NSSortDescriptor alloc] initWithKey:@"month" ascending:YES comparator:^NSComparisonResult(id obj1, id obj2) {
    ...
}];

回复:

typedef NS_ENUM(NSInteger, NSComparisonResult) {NSOrderedAscending = -1L, NSOrderedSame, NSOrderedDescending};
于 2013-01-07T16:51:55.493 回答