gpt4 book ai didi

ios - 按字符串排序, float 不起作用

转载 作者:行者123 更新时间:2023-11-29 02:49:58 26 4
gpt4 key购买 nike

我在要排序的数据数组中有名称和距离字段;我可以按其中一个排序,但不能同时排序。我希望数据首先按名称排序,然后按距离排序,但是当我同时使用两者时,排序总是在列表中的第一个描述符上,第二个似乎被忽略了。

    NSSortDescriptor *nameSort = [[NSSortDescriptor alloc] 
initWithKey:@"NAME"
ascending:YES
selector:@selector(localizedStandardCompare:)];

NSSortDescriptor *distanceSort = [[NSSortDescriptor alloc]
initWithKey:@"DISTANCE"
ascending:YES];

sortedArray = [featureSet.features sortedArrayUsingDescriptors:@[nameSort, distanceSort]];

[super.tableView reloadData];

最佳答案

您看到的行为绝对是有道理的 - “A&W #0338”出现在“A&W #0339”之前,因此距离排序没有更多需要确定的内容。

如果您的所有数据都以这种方式构建 - 名称后跟 #000 - 您可以去除排序中的数字,然后您的距离排序就可以完成它的工作。您可以通过将您的标题拆分为两个属性(名称和位置编号)在模型层执行此操作,也可以在排序描述符内执行此操作。

    NSSortDescriptor *nameSort = [NSSortDescriptor sortDescriptorWithKey:@"title" ascending:YES comparator:^NSComparisonResult(NSString *str1, NSString *str2) {
NSString *title1 = [[str1 componentsSeparatedByString:@" #"] firstObject];
NSString *title2 = [[str2 componentsSeparatedByString:@" #"] firstObject];
return [title1 compare:title2];
}];

如果您使用此名称排序和您的距离排序,“A&W #0338”、“25 km”将出现在“A&W #0339”之后

关于ios - 按字符串排序, float 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24677364/

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