iphone - 使用 NSSortDescriptor 时发现一些错误

标签 iphone ios xcode nsdate nssortdescriptor

我已经使用 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/

相关文章:

php - 错误域=NSCocoaErrorDomain 代码=3840 JSONObject

ios - 使用自定义 iOS 框架绑定(bind) sqlite 数据库

iphone - iPhone 上的 double 与 float

iphone - Web 服务中解析数据 Json 和 XML 哪个更快?

ios - 注解 dealloc 方法从不在 ARC 中调用,底层的 viewcontroller dealloc 被调用

ios - 无法将变量设置为 nil

ios - iOS中如何获取按时间范围修剪后的视频?

iphone - [UILabel copyWithZone :]: unrecognized selector sent to instance

iphone - 如何使用Apple SimpleFtpsample项目中的Listviewcontroller类从ftp获取文件夹列表

ios - 使用谷歌地图和 Swift 的当前位置