【发布时间】:2012-08-19 15:32:24
【问题描述】:
我使用 NSSortDescriptor 以日期为键对我的对象进行排序。我的代码:
NSLog(@"Before sorting: %@", temp);
NSSortDescriptor *dateSortDescriptor = [NSSortDescriptor sortDescriptorWithKey: @"date" ascending: YES];
NSArray *sortedArray2 = [temp sortedArrayUsingDescriptors:[NSArray arrayWithObject: dateSortDescriptor]];
NSLog(@"After sorting: %@", sortedArray2);
NSMutableArray *afterSorting = [[(NSArray*)sortedArray2 mutableCopy]autorelease];
当日期合适时效果很好
22/08/2012
23/08/2012
25/09/2012
但是,我发现 NSSortDescriptor 似乎只按前面的前两个数字排序,因为当我的日期稍有变化时,我的结果变成了这样:
10/09/2012
22/08/2012
23/08/2012
有人可以请教吗?看到许多其他使用 NSSortDescriptor 的帖子与我上面的代码类似,但它们似乎在任何地方都没有错误。对我来说,它只按天排序,而不是按月排序!我所做的是对日期较近的对象进行排序。谢谢!
【问题讨论】:
-
键“date”的值是日期对象还是字符串?
-
它实际上是从一个 plist 中检索的,一个字符串。但我不知道如何将其转换为 NSdate。嗯..愿意分享吗?:)
-
我获取字符串,转换为 NSDate,然后在排序之前将其添加回数组中还是??
-
最简单的方法是转换为日期然后排序,然后再转换回字符串(如果您需要它是字符串)。否则,您将不得不编写自定义排序器。
-
最简单的解决方案是将日期编码为 YYYY/MM/DD。
标签: iphone ios xcode nsdate nssortdescriptor