为什么我有这个名为“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
它没有真正排序......
答案 0 :(得分:5)
您的密钥似乎实际上是NSString
个对象,而不是NSNumber
个对象。这意味着他们按字典顺序排序,而不是数字排序。
答案 1 :(得分:1)
看来Carl所说的是正确的,你实际上有一个充满字符串对象的数组。如果您知道它们代表数字,那么以数字方式对这些数字进行排序的最简单方法是对这些对象的intValue
方法进行排序。
这方面的一个例子是:
NSArray *sortedKeys = [keys sortedArrayUsingDescriptors:@[[NSSortDescriptor sortDescriptorWithKey:@"intValue" ascending:YES]]];