我想对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);
}
答案 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:
)]);
这将为您提供一个排序数组。