2010-12-04 43 views
11

的一个NSArray我的NSDate对象的一个​​NSArray,我想这样,今天是在0对它们进行排序,昨日1等排序NSDates

难道是上升或下降,并做我使用的功能,选择器还是什么?

回答

37

对于NSArray有不同的排序方法,因为可能有不同的方法来排序。 NSSortDescriptors是一种通用的方法,就排序中使用哪些键,您想要在这些键上使用哪些选择器以及使用的总体顺序等方面给予您很多选择。或者,您可以使用函数或比较器块你的情况要求,或者如果这对你的特定情况更方便。

要回答你的第一个问题,如果你想今天成为第一个问题,那么在昨天之后,是的,那当然是降序。 (假设一个NSArray全NSDates称为“dateArray”的):

降序排列,你可以做一些这方面的日期进行排序

NSSortDescriptor *descriptor = [[NSSortDescriptor alloc] initWithKey:@"self" ascending:NO]; 
NSArray *descriptors = [NSArray arrayWithObject: descriptor]; 
[descriptor release]; 

NSArray *reverseOrder = [dateArray sortedArrayUsingDescriptors:descriptors]; 

或者,如果您正在为iOS 4以上版本或雪豹+你可以这样做:

NSArray *reverseOrderUsingComparator = [dateArray sortedArrayUsingComparator: 
             ^(id obj1, id obj2) { 
              return [obj2 compare:obj1]; // note reversed comparison here 
             }]; 
-1

试试这个神奇:

升序排序日期排序排列。

即日期变得越来越晚,或者换句话说,日期是未来的日期。

NSArray ascendingDates = [dates sortedArrayUsingSelector:@selector(compare:)]; 

排序阵列以降序日期。(什么问的问题)

即日期早,晚得早,红枣去到过去或者换一种说法:今天是在索引0,昨日在指数1

NSArray* descendingDates = [[[dates sortedArrayUsingSelector:@selector(compare:)] reverseObjectEnumerator] allObjects];