字符串排序描述符返回不需要的结果

时间:2013-01-14 00:59:00

标签: objective-c nssortdescriptor

我使用这种排序描述符

NSArray *sortedObjects = [self.array sortedArrayUsingDescriptors:[NSArray arrayWithObjects:[NSSortDescriptor sortDescriptorWithKey:@"index" ascending:YES], nil]];

结果是10和11与1并排列在2之前。

index is 1/12
index is 10/12
index is 11/12  
index is 2/12  
index is 3/12
index is 4/12
index is 5/12
index is 8/12
index is 9/12

如何避免这种情况?

2 个答案:

答案 0 :(得分:1)

使用您自己的比较

- (NSArray *)sortedArrayWithOptions:(NSSortOptions)opts usingComparator:(NSComparator)cmptr


另一种允许自定义比较器。

然后将日期分开并比较月份和日期。

答案 1 :(得分:0)

我不知道那个类是你正在打印的项目,可能是字符串。这是因为' /'字符的值高于' 0'。

您必须使用自定义方法或块进行比较。因此,初始化选择器,不仅是键:

NSSortDescriptor* sd= [[NSSortDescriptor alloc]initWithKey: @"index" ascending: YES selector: @selector(customCompare:)];
NSArray *sortedObjects = [self.array sortedArrayUsingDescriptors: @[ sd ] ];

在customCompare:方法中,您应该比较对象。