如何对日期对象的NSMutableArray进行排序

Jok*_*ker 5 iphone objective-c nsdate nssortdescriptor ios

我正在做一些关于在NSMutableArray中排序日期字符串的小工作,我从sqlite db获取数组.如果您打印阵列,它将显示如下

日期字符串为("2011-05-01","2011-02-01","2012-01-08","2012-05-08","2010-01-09)

我想按升序显示日期.请帮帮我们......我是objc的新手..

Ano*_*dya 22

首先,您应该将所有日期字符串(即NSString)对象转换为NSDate对象,然后对这些对象进行排序dateObjects.

我相信你已经dateArray包含了所有这些字符串.

NSSortDescriptor *descriptor = [[NSSortDescriptor alloc] initWithKey:@"self" 
                                                           ascending:NO];
NSArray *descriptors = [NSArray arrayWithObject:descriptor];
NSArray *reverseOrder = [dateArray sortedArrayUsingDescriptors:descriptors];
Run Code Online (Sandbox Code Playgroud)

要么

NSArray *reverseOrderUsingComparator = [dateArray sortedArrayUsingComparator: 
                                       ^(id obj1, id obj2) {
                                           return [obj2 compare:obj1];
                                       }];
Run Code Online (Sandbox Code Playgroud)


rob*_*off 5

如果您的日期确实是格式中的字符串YYYY-mm-dd,如问题所示,那么这将按升序对它们进行排序:

[arrayOfDates sortUsingSelector:@selector(compare:)];
Run Code Online (Sandbox Code Playgroud)

如果您的日期实际上是NSDate对象,那也将有效.

如果要创建数组的排序副本:

NSArray *sortedArray = [arrayOfDates sortedArrayUsingSelector:@selector(compare:)];
Run Code Online (Sandbox Code Playgroud)