首页 > 解决方案 > 使用每个元素对数组进行排序包含一个 NSString 和一个 NSNumber (double) 条目

问题描述

NSMutableArray我用两个元素创建了一个;城市名称(索引 0 处的字符串)和与我当前位置的距离(索引 1 处的两倍)。

for (i=0;i<[City count];++i)
{
distanceFromMe = [Location distanceFromLocation:[cityLocation]];
[a addObject:[cityNames objectatIndex:i]];
[a addObject:@(distanceFromMe)]
[cityArray addObject:a]
}

“芝加哥”,560.34

“纽约”,204.3456

“雪城”,50.04

我想按升序对这个数组进行排序。

“雪城”,50.04

“纽约”,204.3456

“芝加哥”,560.34

我用了:

[cityArray sortUsingDescriptors:@[ [NSSortDescriptor sortDescriptorWithKey:nil ascending:YES] ]];

但是我不断收到一个无法识别的选择器发送到实例的错误。在我的阅读中,该方法似乎不需要键,因为NSNumber数组元素中只有一个键。我已经阅读了许多不同的主题,但似乎没有一个适用。

任何帮助,将不胜感激。使用 xcode obj-c 不迅速。

标签: objective-ccollocation

解决方案


我会在不使用排序描述符的情况下做到这一点。

[cityArray sortUsingComparator:
    ^NSComparisonResult(id  _Nonnull obj1, id  _Nonnull obj2) {
        NSArray* arr1 = obj1;
        NSArray* arr2 = obj2;
        return [arr1[1] compare: arr2[1]];
    }];

推荐阅读