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

时间:2012-12-02 07:26:39

标签: ios iphone objective-c nsdate nssortdescriptor

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

日期字符串是(     “2011-05-01”,     “2011-02-01”,     “2012-01-08”,     “2012-05-08”,     “2010-01-09 )

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

3 个答案:

答案 0 :(得分:22)

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

我相信你有dateArray包含所有这些字符串。

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

OR

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

答案 1 :(得分:5)

如果你的日期确实是YYYY-mm-dd格式的字符串,就像你的问题一样,那么这将按升序排序:

[arrayOfDates sortUsingSelector:@selector(compare:)];

如果你的日期实际上是NSDate个对象,那也会有效。

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

NSArray *sortedArray = [arrayOfDates sortedArrayUsingSelector:@selector(compare:)];

答案 2 :(得分:1)

通常,数据库应该对imo进行排序。 sqlite3支持order by