0

我在地图上有一组点。我正确地填充了数组,并在地图上为它们添加了注释。一切正常。我有另一个具有相同数组的表格视图,在单元格的“副标题”中,我计算到用户和当前的距离。一切正常。

现在,我想在表格视图中对列表进行排序,换句话说,我想按距离对同一数组进行排序,从最低到最高。

问题是距离不是阵列的一部分。那么如何将距离与数组交叉匹配,这样当我对距离进行排序时,它会使用它在数组中的所属对象并对数组进行排序?

我对 ios 还很陌生,但我现在已经成功发布了 3 个应用程序,而这是第四个应用程序,要复杂得多,我认为到目前为止,我在制作应用程序方面已经有了很好的基础。从地图视图,到带有搜索控制器的表格视图等等。我只是错过了排序。

我想我需要为数组中的每个对象添加一些标签或属性,并将其分配给距离数组中的每个距离。任何建议将不胜感激:) 提前致谢。

4

2 回答 2

3
// Assuming you have your points on the map in an NSArray called
// pointsOnMapArray and your distances in distanceArray, create a
// new mutable array to hold both.  Note, the "distances" in this
// case are stored as NSStrings.  We'll want to convert them to
// doubles before sorting them.
NSMutableArray *newArray = [[NSMutableArray alloc] init];

// Iterate over all of the points, and add a new element to the mutable
// array which is a new array containing a point and its distance.  The
// distance is converted from an NSString to an NSNumber containing a
// doubleValue.
int i;   
for (i = 0; i < pointsOnMapArray.count; i++) {
    NSArray *newItem = [NSArray arrayWithObjects: [pointsOnMapArray objectAtIndex: i], [NSNumber numberWithDouble:[[distanceArray objectAtIndex: i] doubleValue]], nil];
    [newArray addObject: newItem];
}

// Now, sort the new array based upon the distance in the second element
// of each array (ie, the distance).
[newArray sortUsingComparator: ^(id obj1, id obj2) {
    NSNumber *dist1 = [obj1 objectAtIndex:1];
    NSNumber *dist2 = [obj2 objectAtIndex:1];

    return [dist1 compare:dist2];
}];
于 2012-09-16T02:20:37.300 回答
1

尝试用数组的距离和元素制作字典。然后通过对距离进行排序,可以对数组元素进行相应的排序。

NSMutableDictionary *dict=[[NSMutableDictionary alloc]init];
[dict setObject:(array element) forKey:(correspondingDistance)];

现在通过对键进行排序,您可以相应地对数组的元素进行排序。

于 2012-09-16T01:59:43.570 回答