【问题标题】:array sorting not right obj c [duplicate]数组排序不正确obj c [重复]
【发布时间】:2013-07-19 02:20:09
【问题描述】:

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

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

【问题讨论】:

标签: objective-c arrays sorting


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    这方面的一个例子是:

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

    【讨论】:

      猜你喜欢
      • 2021-06-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多