我一直在阅读一些关于订购NSMutable数组的帖子,但是在使用它时遇到了麻烦,本质上我在tableview中有很多条目,可以添加无限量,但是我需要通过包含NSMutable数组来排序它们数值,这将远远超过10.我真的很感激任何人可以给我的帮助,我一直在使用比较参数,但我似乎无法让它扭转顺序,其次我读了上面的数字10会以奇怪的方式开始排序.我很快就会发布代码,但是我要考虑的任何事情都会很棒.
谢谢
答案取决于数组中的对象是数字还是字符串.也有不同的方法(来排序列sortUsingDescriptors,sortUsingComparator...).
如果你有一个数字数组,你可以按递减顺序对它们进行排序,例如:
NSMutableArray *a = [NSMutableArray arrayWithObjects:@1, @55, @9, @17, nil];
[a sortUsingComparator:^NSComparisonResult(NSNumber *obj1, NSNumber *obj2) {
    return -[obj1 compare:obj2];
}];
// Result: 55, 17, 9, 1.
注意比较器块中的减号,它具有将顺序从增加反转为减少的效果.
如果你有一个字符串数组,并且你以相同的方式继续,那么你将得到你所谓的"10以上的数字将以一种奇怪的方式开始排序":
NSMutableArray *a = [NSMutableArray arrayWithObjects:@"1", @"55", @"9", @"17", nil];
[a sortUsingComparator:^NSComparisonResult(NSString *obj1, NSString *obj2) {
    return -[obj1 compare:obj2];
}];
// Result: 9, 55, 17, 1.
对象按字符串排序,而不是数字.
解决方案是使用NSNumericSearch选项:
NSMutableArray *a = [NSMutableArray arrayWithObjects:@"1", @"55", @"9", @"17", nil];
[a sortUsingComparator:^NSComparisonResult(NSString *obj1, NSString *obj2) {
    return -[obj1 compare:obj2 options:NSNumericSearch];
}];
// Result: 55, 17, 9, 1.
| 归档时间: | 
 | 
| 查看次数: | 1557 次 | 
| 最近记录: |