如何对日期对象的 NSMutableArray 进行排序
Posted
技术标签:
【中文标题】如何对日期对象的 NSMutableArray 进行排序【英文标题】:How to sort NSMutableArray of date objects 【发布时间】:2012-12-02 07:26:38 【问题描述】:我正在做一些对 NSMutableArray 中的日期字符串进行排序的小工作,我正在从 sqlite db 获取数组。 如果你打印它显示的数组是这样的
日期字符串是 ( "2011-05-01", "2011-02-01", "2012-01-08", "2012-05-08", "2010-01-09 )
我想按升序显示日期。请帮帮我......我是objc的新手......
【问题讨论】:
【参考方案1】:首先您应该将所有日期字符串(即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];
];
【讨论】:
他在问题中显示的日期格式即使是字符串也会正确排序。 没必要,他可以把字符串按现在的样子排列。 很好,谢谢伙计....我使用了你的第二个,但它以降序显示数组对象...我怎样才能升序【参考方案2】:如果您的日期确实是 YYYY-mm-dd
格式的字符串,就像您的问题一样,那么这将按升序对它们进行排序:
[arrayOfDates sortUsingSelector:@selector(compare:)];
如果您的日期实际上是 NSDate
对象,这也将起作用。
如果要创建数组的排序副本:
NSArray *sortedArray = [arrayOfDates sortedArrayUsingSelector:@selector(compare:)];
【讨论】:
【参考方案3】:一般来说,排序应该由数据库完成。 sqlite3 确实支持order by。
【讨论】:
以上是关于如何对日期对象的 NSMutableArray 进行排序的主要内容,如果未能解决你的问题,请参考以下文章