我正在做一些关于在NSMutableArray中排序日期字符串的小工作,我从sqlite db获取数组。 如果您打印数组,则显示如下
日期字符串是( “2011-05-01”, “2011-02-01”, “2012-01-08”, “2012-05-08”, “2010-01-09 )
我想按升序显示日期。请帮帮我们......我是objc的新手..
答案 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。