Базовые данные и базовое местоположение

У меня есть база данных Core Data со свойствами широты и долготы. Есть ли способ использовать Базовое Местоположение getDistanceFrom: метод для нахождения пяти ближайших мест к a CLLocation полученный из GPS? Сделайте я должен загрузить все объекты с помощью Базовых Данных и синтаксического анализа через них, с помощью getDistanceFrom: на каждом или там более легкий путь?

24
задан nevan king 1 February 2010 в 10:58
поделиться

2 ответа

Вам придется выполнять через них итерации один за другим; насколько я знаю, другого способа сделать это нет.

Однако, сделать это можно с помощью ограничивающего окошка, когда вы получите элементы из основных данных - это уменьшит количество возвращаемых объектов.

т.е. что-то вроде

float latMax = wantedLat + 1;
float latMin = wantedLat - 1;
float lngMax = wantedLng + 1;
float lngMin = wantedLng - 1;
NSPredicate *predicate = [NSPredicate
    predicateWithFormat:@"lat > %f and lat < %f and lng > %f and lng < %f",
    latMin, latMax, lngMin, lngMax];

Хотя, в зависимости от того, сколько у вас данных и насколько они расположены на расстоянии, вы захотите использовать другое число, чем 1!

Sam

PS Также, я не принял во внимание тот факт, что долгота обертывается!

29
ответ дан 28 November 2019 в 23:59
поделиться

Вы не можете использовать CoreData для поиска ближайшего объекта, но, возможно, захотите сузить запрос с помощью ограничивающего поля. Для поиска ближайшего объекта, возможно, вы предпочтете просто использовать разницу в латах/длине, которая значительно быстрее, чем вычисление реальных расстояний.

У меня был аналогичный вопрос:

CoreData: Найти минимум вычисляемого свойства

2
ответ дан 28 November 2019 в 23:59
поделиться