iOS数组字典排序(键值排序)

2019-06-25  本文已影响0人  YimG

iOS高级程序师技术群:622177838,期待你的加入

由于float类型排序,会因为整数部分位数不同的原因,造成排序问题,比如:

NSArray * arr = @[@[@"startAmout":@"10.00"],@[@"startAmout":@"11.53"],@[@"startAmout":@"15.37"],@[@"startAmout":@"15.37"],@[@"startAmout":@"5.56"],@[@"startAmout":@"17.30"]];

NSSortDescriptor *descriptor = [NSSortDescriptor sortDescriptorWithKey:@"startAmout"ascending:YES];

NSMutableArray * nowArr = [NSMutableArray new];

nowArr= [arr sortedArrayUsingDescriptors:@[descriptor]];

这样排序的结果是这样的:

@[@[@"startAmout":@"10.00"],@[@"startAmout":@"11.53"],@[@"startAmout":@"15.37"],@[@"startAmout":@"15.37"],@[@"startAmout":@"17.30"],@[@"startAmout":@"5.56"]];

大家会发现前半部分都是正常的升序排列,但是唯独最后的5.56个别,大家可以尝试排序打印。

解决办法:

在字典中插入新的参数,比如:

@[@[@"startAmout":@"10.00",@"num":@"1000"],@[@"startAmout":@"11.53",@"num":@"1153"],@[@"startAmout":@"15.37",@"num":@"1537"],@[@"startAmout":@"15.37",@"num":@"1537"],@[@"startAmout":@"5.56",@"num":@"556"],@[@"startAmout":@"17.30",@"num":@"1730"]];

这样排序的结果就是正确的,核心部分的思想就是插入一个新的整形参数来排序整体数组键值,num = startAmout * 100。

如果大家还有更好排列float类型的建议,欢迎留言!!!

上一篇 下一篇

猜你喜欢

热点阅读