我正在做一些对 NSMutableArray 中的日期字符串进行排序的小工作,我正在从 sqlite db 获取数组。如果你打印它显示的数组是这样的
日期字符串是(“2011-05-01”、“2011-02-01”、“2012-01-08”、“2012-05-08”、“2010-01-09”)
我想按升序显示日期。请帮帮我......我是objc的新手......
我正在做一些对 NSMutableArray 中的日期字符串进行排序的小工作,我正在从 sqlite db 获取数组。如果你打印它显示的数组是这样的
日期字符串是(“2011-05-01”、“2011-02-01”、“2012-01-08”、“2012-05-08”、“2010-01-09”)
我想按升序显示日期。请帮帮我......我是objc的新手......
首先,您应该将所有日期字符串(即NSString
)对象转换为NSDate
对象,然后对它们进行排序dateObjects
。
我相信你已经dateArray
包含了所有这些字符串。
NSSortDescriptor *descriptor = [[NSSortDescriptor alloc] initWithKey:@"self"
ascending:NO];
NSArray *descriptors = [NSArray arrayWithObject:descriptor];
NSArray *reverseOrder = [dateArray sortedArrayUsingDescriptors:descriptors];
或者
NSArray *reverseOrderUsingComparator = [dateArray sortedArrayUsingComparator:
^(id obj1, id obj2) {
return [obj2 compare:obj1];
}];
如果您的日期确实是 format 中的字符串YYYY-mm-dd
,如您的问题所示,那么这将按升序对它们进行排序:
[arrayOfDates sortUsingSelector:@selector(compare:)];
如果您的日期实际上是NSDate
对象,这也将起作用。
如果要创建数组的排序副本:
NSArray *sortedArray = [arrayOfDates sortedArrayUsingSelector:@selector(compare:)];
一般来说,排序应该由数据库完成。sqlite3 支持order by。