0

我想对里面有 NSInteger 值的 NSMutableArray 进行排序。我尝试使用此解决方案:

 NSArray *sorted = [array sortedArrayUsingSelector:@selector(compare:)];

它几乎奏效了,所以我想问为什么不是一切都好。以下是数据示例:

not sorted = (
    30,
    42,
    54,
    6,
    18
)

 sorted = (
    18,
    30,
    42,
    54,
    6
)

我们可以看到它对除了数组末尾的 6 值之外的所有内容进行了排序。

为什么会发生这种情况?

谢谢你。

完整方法:

- (void) initialize{
    NSInteger min = 30;
    NSInteger interval = 12;
    NSInteger count = floor(60/interval);

    for (int i = 0; i < count; i++) {

        [array addObject:[NSString stringWithFormat:@"%i",min]];
        min +=interval;

        if (min > 60)
            min -= 60;
    }

    //DLog(@"not sorted = %@",minutes);
    array = [[array sortedArrayUsingSelector:@selector(compare:)] mutableCopy];
    //DLog(@"sorted = %@",minutes);

}
4

1 回答 1

1

在上述情况下您遇到了问题,因为您正在排序字符串值而不是 NSNUMBER。您必须使用 NSNumber 来添加整数对象。然后执行以下操作:

      NSMutableArray *array = [[NSMutableArray alloc ] initWithObjects:
                              [NSNumber numberWithInt:10],    
                              [NSNumber numberWithInt:50],
                              [NSNumber numberWithInt:5],
                              [NSNumber numberWithInt:3],
                              nil];

      NSLog(@"SORTED = %@",[array sortedArrayUsingSelector:@selector(compare:
                                                               )]);

这会给你一个排序的数组。

于 2012-12-18T07:29:56.820 回答