Какова лучшая стратегия сортировки объектов по расстоянию от текущего местоположения на iOS - PullRequest
2 голосов
/ 09 октября 2011

Мне нужно показать список продуктов, отсортированных по расстоянию до ближайшего адреса компании этого продукта.

У меня есть структура данных шнура, например:

Продукт << -> Компания <- >> Адреса

Сущность address имеет поле NSNumber для широты и долготы. У меня также есть общий синглтон, который выбирает и сохраняет текущий CLLocation.

Какая лучшая стратегия для извлечения и сортировки?

Метод 1

Добавьте свойство readonly distance к объекту Address, которое создает CLLocation из свойств lat / lng и возвращает вычисленное расстояние между ним и сохраненным currentLocation из общего сингтона. Это может помочь мне использовать NSPredicate для сортировки и фильтрации. Мне интересно, если это будет иметь затраты производительности, хотя.

Метод 2

Просто извлеките все продукты в массив и переберите массив, чтобы отсортировать его вручную.

1 Ответ

0 голосов
/ 06 октября 2012

Когда я это сделал, я использовал это в синглтоне:

- (NSNumber*) distanceToLocation:(CLLocationCoordinate2D) location{
    if (!self.isValidLocation) return nil;


    CLLocation *loc = [[CLLocation alloc] initWithLatitude:location.latitude longitude:location.longitude];    
    CLLocationDistance distance=[self.locationManager.location distanceFromLocation:loc];
    return [NSNumber numberWithDouble:distance];

}

Тогда свойство readonly объекта address вызывает его.

...