0

为什么如果我有这个名为“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

它没有真正排序...

4

2 回答 2

5

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

于 2013-07-19T17:32:38.990 回答
1

卡尔所说的似乎是正确的,并且您实际上有一个充满字符串对象的数组。如果您知道它们代表数字,那么对它们进行数字排序的最简单方法是对intValue这些对象的方法进行排序。

这方面的一个例子是:

NSArray *sortedKeys = [keys sortedArrayUsingDescriptors:@[[NSSortDescriptor sortDescriptorWithKey:@"intValue" ascending:YES]]];
于 2013-07-19T18:18:15.803 回答