使用NSInteger值对NSMutableArray进行排序

时间:2012-12-18 07:12:19

标签: objective-c ios nsmutablearray

我想对NSMutableArray进行排序,其中包含NSInteger值。我尝试使用这个解决方案:

 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);

}

1 个答案:

答案 0 :(得分: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:
                                                               )]);

这将为您提供一个排序数组。