我有一个包含日期字符串(即NSString)的NSArray
,如下所示:“strings,21 May 09 19:10:09 -0700”
我需要按日期对NSArray
进行排序。我考虑过首先将日期字符串转换为NSDate
对象,但在如何按NSDate
对象排序的问题上遇到了困难。
谢谢。
发布于 2009-07-15 21:12:54
将日期作为NSDate
对象存储在NS(可变)数组中,然后使用[-[NSArray sortedArrayUsingSelector:
](https://developer.apple.com/documentation/foundation/nsarray/1410025-sortedarrayusingselector?language=objc)或-[NSMutableArray sortUsingSelector:]
并将dates作为参数传递。-[NSDate compare:]
方法将为您以升序排列日期。这比创建NSSortDescriptor
更简单,也比编写自己的比较函数简单得多。(NSDate
对象知道如何相互比较,至少与我们希望通过自定义代码实现的效率一样高。)
发布于 2010-10-12 17:25:10
如果我有一个带有NSDate
类型字段"beginDate“的对象的NSMutableArray
,我使用的NSSortDescriptor
如下所示:
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"beginDate" ascending:TRUE];
[myMutableArray sortUsingDescriptors:[NSArray arrayWithObject:sortDescriptor]];
[sortDescriptor release];
发布于 2012-11-11 02:29:48
您还可以使用类似以下内容:
//Sort the array of items by date
[self.items sortUsingComparator:^NSComparisonResult(id obj1, id obj2){
return [obj2.date compare:obj1.date];
}];
,但这确实假设日期存储为 NString
,而不是,这应该不会有任何问题。最好,我还建议以原始格式存储数据。使得在这样的情况下更容易操作。
https://stackoverflow.com/questions/1132806
复制相似问题