0

我创建了一个显示来自用户当前位置的数据的应用程序。我想根据用户找到的最小距离对它们进行排序。我知道我需要使用这种功能:

[userLocationd istanceFromLocation:cameraLocation];

但是,在那之后我该怎么办?我应该根据距离对每个人进行排序并将它们放入一个数组中,但是我如何根据用户的最小位置重新排列每个单元格?(cellForRowAtIndexPath)

还; 我还没有真正弄清楚如何找到用户的位置。我同意这一点,但如果有人指出我正确的方向会很有帮助。

如何对数组进行排序以最小距离到最大位置?

我用过这段代码。

    CLLocation *location1 = [[[CLLocation alloc] initWithLatitude:someLatitude longitude:someLongitude] autorelease];

    CLLocation *location2 = [[CLLocation alloc] initWithLatitude:coordinate.latitude longitude:coordinate.longitude];

    float target = [location2 distanceFromLocation:location1];
    target = target / 1000;

提前致谢!

4

2 回答 2

0

我发现使用此代码的解决方案将完美运行

 uint smallest[5];

    NSMutableArray *array = [[NSMutableArray alloc] initWithObjects:[NSNumber numberWithDouble:0.5], [NSNumber numberWithDouble:0.25], [NSNumber numberWithDouble:1], [NSNumber numberWithDouble:0.75], [NSNumber numberWithDouble:0.15], [NSNumber numberWithDouble:0.85], [NSNumber numberWithDouble:0.95], [NSNumber numberWithDouble:0.32], [NSNumber numberWithDouble:0.21], [NSNumber numberWithDouble:0.05], nil];

    // declare flags
    uint flags[array.count];

    // initialize flags
    for(uint i = 0; i < [array count]; i++)
        flags[i] = 0;

    for(int i = 0; i < 5; i++)
    {
        smallest[i] = -1;
        for(int j = 0; j < [array count]; j++)
        {
            // check flag
            if(!flags[j])
            {
                if(smallest[i] == -1 ||
                   [[array objectAtIndex:smallest[i]] doubleValue] > [[array objectAtIndex:j] doubleValue])
                {
                    // reset flag for previous index
                    if(smallest[i] != -1)
                        flags[smallest[i]] = 0;
                    // set flag for current index
                    flags[j] = 1;
                    smallest[i] = j;
                }
            }
        }
    }

    for(uint i = 0; i < 5; i++)
        NSLog(@"Smallest[%u]: %u -> %f", i, smallest[i], [[array objectAtIndex:smallest[i]] doubleValue]);

如果有人有任何问题,请链接到这个专门针对原始开发人员MatthewD的问题

于 2012-04-05T11:09:56.997 回答
0

对模型中的数组进行排序,使其符合您想要的距离顺序,然后在 tableview 上调用重新加载。然后将从数据模型中刷新,您的列表将按正确的顺序排列。

于 2012-04-05T08:49:01.550 回答