Похоже, ваши расчеты расстояния для каждого пользователя перезаписываются.
Я полагаю, allDistances
имеет ключ userID
(или что-то подобное). Учитывая это предположение, когда вычисление расстояния будет завершено, вы захотите вставить это расстояние в allDistances
, например, так:
CLLocationDistance distanceInKilometers = [self.startLocation distanceFromLocation:self.endLocation] / 1000.0;
self.allDistances[userID] = @(distanceInKilometers);
ПРИМЕЧАНИЕ : @()
необходим для того, чтобы хранить примитивный тип (то есть double
, который является CLLocationDistance
) в коллекции Objective-C, такой как NSMutableDictionary
. Это называется «боксом», и оно превращает CLLocationDistance
в NSNumber *
.
Теперь, когда все ваши расстояния рассчитаны и сохранены в allDistances
, в вашем методе -tableView:cellForRowAtIndexPath:
вы можете использовать их для каждой ячейки:
// Assuming you know what user this cell belongs to,
// pull the distance out of `allDistances` using their `userID`.
NSNumber *distanceNumber = self.allDistances[userID];
// "Unbox" the number as a `CLLocationDistance`
CLLocationDistance distance = distanceNumber.doubleValue;
// Use that distance to set the cell text
cell.kmAway.text = [NSString stringWithFormat:@"%f", distance];