数组排序不对obj c



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

它并没有真正排序。。。

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

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

例如:

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

最新更新