我使用这种排序描述符
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
如何避免这种情况?
答案 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:方法中,您应该比较对象。