Cocoa 对NSDATE的NSArray进行排序
我有一个NSDate对象的NSArray,我想对它们进行排序,以便今天是0,昨天是1等等Cocoa 对NSDATE的NSArray进行排序,cocoa,nsarray,nsdate,Cocoa,Nsarray,Nsdate,我有一个NSDate对象的NSArray,我想对它们进行排序,以便今天是0,昨天是1等等 它是升序还是降序,我使用函数、选择器还是什么?NSArray有不同的排序方法,因为您可能需要不同的排序方法。NSSortDescriptor是一种通用方法,它为您提供了很多选项,包括排序时使用哪些键、在这些键上使用哪些选择器以及使用的总体顺序等。或者,如果您的情况需要,或者如果您的特定情况更方便,您可以使用函数或比较器块 要回答你的第一个问题,如果你想今天是第一个,然后是昨天,那么,是的,这当然是降序排列
它是升序还是降序,我使用函数、选择器还是什么?NSArray有不同的排序方法,因为您可能需要不同的排序方法。NSSortDescriptor是一种通用方法,它为您提供了很多选项,包括排序时使用哪些键、在这些键上使用哪些选择器以及使用的总体顺序等。或者,如果您的情况需要,或者如果您的特定情况更方便,您可以使用函数或比较器块 要回答你的第一个问题,如果你想今天是第一个,然后是昨天,那么,是的,这当然是降序排列 要按降序对某些日期进行排序,您只需执行以下操作:(假设NSArray中满是名为“dateArray”的NSDates): 或者,如果您正在为iOS 4+或Snow Leopard+构建,您可以这样做:
NSArray *reverseOrderUsingComparator = [dateArray sortedArrayUsingComparator:
^(id obj1, id obj2) {
return [obj2 compare:obj1]; // note reversed comparison here
}];
试试这个魔术:
按升序对日期数组排序。
i、 日期变得越来越晚,或者换一种说法,日期将进入未来
按降序对日期数组排序。(问题的内容)
i、 日期越来越早,日期回到过去,或者换一种说法:今天在指数0,昨天在指数1
NSArray *reverseOrderUsingComparator = [dateArray sortedArrayUsingComparator:
^(id obj1, id obj2) {
return [obj2 compare:obj1]; // note reversed comparison here
}];
NSArray ascendingDates = [dates sortedArrayUsingSelector:@selector(compare:)];
NSArray* descendingDates = [[[dates sortedArrayUsingSelector:@selector(compare:)] reverseObjectEnumerator] allObjects];