我已经使用 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 与我上面的代码类似,但它们似乎在任何地方都没有错误。对我来说,它只按天排序,而不按月排序!我所做的就是对对象进行排序,将日期较近的放在最上面。谢谢!
最佳答案
您显示的排序顺序实际上是正确的。问题是您正在对字符串而不是日期进行排序。如果可能,请使用 NSDate
实例而不是 NSString
实例填充 date
属性,然后排序将按照您的预期进行。
如果由于某种原因您无法在 date
属性中使用 NSDate
实例(这看起来有点奇怪,但谁知道呢),您可以改为对数组,方法是向其发送 sortedArrayUsingComparator:
消息,并传入定义自定义排序的 block 。
关于iphone - 使用 NSSortDescriptor 时发现一些错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12027695/