gpt4 book ai didi

nsmutablearray - 按降序排列 NSMutable 数组

转载 作者:行者123 更新时间:2023-12-01 10:59:06 25 4
gpt4 key购买 nike

我一直在阅读一些关于订购 NSMutable 数组的文章,但在让它工作时遇到了问题,本质上我在一个 TableView 中有许多条目,可以添加无限量但我需要通过 NSMutable 订购它们包含数值的数组,将远高于 10。我真的很感激任何人能给我的帮助,我一直在使用比较参数,但我似乎无法让它颠倒顺序,其次我读了超过 10 的数字会以一种奇怪的方式开始排序。我很快就会发布你的代码,但任何让我仔细考虑的东西都会很棒。

谢谢

最佳答案

答案有点取决于数组中的对象是数字 还是字符串。还有各种方法对数组进行排序(sortUsingDescriptorssortUsingComparator、...)。

如果您有一个数字数组,您可以按降序对它们进行排序,例如:

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.

请注意比较器 block 中的减号,它具有将顺序从递增反转为递减的效果。

如果您有一个字符串数组,并且以相同的方式进行操作,那么您将得到所谓的“大于 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.

关于nsmutablearray - 按降序排列 NSMutable 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12899394/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com