数组排序不正确obj c

时间:2013-07-19 17:31:21

标签: objective-c arrays sorting

为什么我有这个名为“keys”的数组:

(     950,     24889,     24893,     24694,     947,     13227,     23549,     37839,     951,     6213,     24892,     24897,     948,     37838,     30971,     952,     13249,     24891,     24896,     949,     37837,     24890,     945,     953,     24895,     23791,     37836,     24894,     946,     13228 )

我用它排序:

NSArray * sortedKeys = [keys sortedArrayUsingSelector:@selector(compare :));

排序后的数组sortedKeys是这个吗?

(     13227,     13228,     13249,     23549,     23791,     24694,     24889,     24890,     24891,     24892,     24893,     24894,     24895,     24896,     24897,     30971,     37836,     37837,     37838,     37839,     6213,     945,     946,     947,     948,     949,     950,     951,     952,     953

它没有真正排序......

2 个答案:

答案 0 :(得分:5)

您的密钥似乎实际上是NSString个对象,而不是NSNumber个对象。这意味着他们按字典顺序排序,而不是数字排序。

答案 1 :(得分:1)

看来Carl所说的是正确的,你实际上有一个充满字符串对象的数组。如果您知道它们代表数字,那么以数字方式对这些数字进行排序的最简单方法是对这些对象的intValue方法进行排序。

这方面的一个例子是:

NSArray *sortedKeys = [keys sortedArrayUsingDescriptors:@[[NSSortDescriptor sortDescriptorWithKey:@"intValue" ascending:YES]]];