5

我再次陷入另一个问题,但经过很长时间。

这次我有数据库(核心数据),其属性numbers包含整数,如 213879,123,4,345,56567 等。

我需要以类似于类似alphabetically顺序的升序获取数据。

我正在按照下面给出的方式这样做,

fetchRequest.sortDescriptors=[NSArray arrayWithObject:
      [NSSortDescriptor sortDescriptorWithKey:@"numbers" 
                                    ascending:YES 
                                     selector:@selector(compare:)]];

但不幸的是,它只比较每个数字的第 1 位,意味着如果有 2 个类似123and的数字321,它将与它们进行比较1 (first digit of first number)3 (first digit of second number)排序。

当出现123111(所有数字的第一个数字相同)时,它变得混乱。

如果我做错了什么或 SortDescriptor 以这种方式工作?我需要同样对数字进行升序排序的解决方案123,133,213,451,516

要记住的事情 实际上,该属性numbers将包含数字多于 6 位的整数。例如1234567,234568,235481

感谢所有在期待中帮助我的人。

4

3 回答 3

14

试试这个:

NSSortDescriptor *descriptor = [[NSSortDescriptor alloc]initWithKey:@"rank"  ascending:YES selector:@selector(localizedStandardCompare:)];
于 2014-02-27T08:32:41.613 回答
3

看来您的属性是 type NSString。确保你做到了NSNumber,然后排序将按预期工作。

不需要selector:@selector(compare:)在您的排序描述符中,因为无论如何这是默认设置。

于 2012-12-14T07:19:26.993 回答
3
[NSSortDescriptor sortDescriptorWithKey:@"self"
                              ascending:YES
                             comparator:^(id obj1, id obj2){
    return [(NSString*)obj1 compare:(NSString*)obj2
                            options:NSNumericSearch];
 }];

这对我来说很好用

于 2013-01-08T04:40:31.667 回答