我又陷入了另一个问题,但过了很长时间。
这一次我有一个数据库(核心数据),它的属性是numbers,它包含整数,比如213879,123,4,345,56567等等。
我需要按类似于alphabetically顺序的升序获取数据。
我这样做的方式如下,
fetchRequest.sortDescriptors=[NSArray arrayWithObject:
[NSSortDescriptor sortDescriptorWithKey:@"numbers"
ascending:YES
selector:@selector(compare:)]];但不幸的是,它只对每一个数字中的第一位进行比较,这意味着,如果有像123和321这样的两个数字,它将比较1 (first digit of first number)和3 (first digit of second number),并对它们进行排序。
当出现123和111 (所有数字的第一位数相同)时,它就变得混乱了。
如果我做错了什么,或者SortDescriptor以这种方式工作?我同样需要解决方案来排序升序123,133,213,451,516中的数字。
要记住在实际中属性numbers将包含大于6位数的整数,例如1234567,234568,235481。
感谢所有期待中帮助我的人。
发布于 2012-12-14 07:19:26
您的属性似乎是NSString类型的。确保您到达了NSNumber,然后排序将按预期的方式工作。
在排序描述符中不需要selector:@selector(compare:),因为这是默认的。
发布于 2014-02-27 08:32:41
试试这个:
NSSortDescriptor *descriptor = [[NSSortDescriptor alloc]initWithKey:@"rank" ascending:YES selector:@selector(localizedStandardCompare:)];发布于 2013-01-08 04:40:31
[NSSortDescriptor sortDescriptorWithKey:@"self"
ascending:YES
comparator:^(id obj1, id obj2){
return [(NSString*)obj1 compare:(NSString*)obj2
options:NSNumericSearch];
}];这对我来说很好
https://stackoverflow.com/questions/13874256
复制相似问题