У меня есть база данных Core Data с широтно-долготными свойствами. Есть ли способ использовать метод Core Location getDistanceFrom:
, чтобы найти пять ближайших мест до CLLocation
, полученных из GPS? Нужно ли загружать все объекты с помощью Core Data и анализировать их, используя getDistanceFrom:
на каждом из них или есть более простой способ?Основные данные и местоположение ядра
ответ
Вы должны будете перебирать их один за другим; насколько я знаю, нет другого способа сделать это.
Однако вы можете сделать это более эффективным, используя ограничительную рамку, когда вы получите элементы из основных данных - это уменьшит количество возвращаемых объектов.
т.е. что-то вроде
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!
Сэм
PS Кроме того, я не принял во внимание тот факт, что долгота обертками!
Вы не можете использовать CoreData для поиска ближайшего объекта, но можете сузить запрос с помощью ограничивающего прямоугольника. Чтобы найти ближайший объект, вы можете использовать просто разницу в lat/long, которая значительно быстрее, чем вычисление фактических расстояний.
У меня был подобный вопрос:
Спасибо за ссылку. –
Следующий пример - это то, что вы ищете. Он использует функцию SQLite для вычисления расстояния в предложении ORDER BY (формула Хаверсина). Проблема заключается в том, что этот пример не использует Core-Data, а SQLite API напрямую.
- 1. Основные данные ядра Рекурсивные отношения
- 2. NSDictionary и основные данные
- 3. Основные данные и MySQL
- 4. UIManagedDocument и основные данные
- 5. . Основные взаимодействия ядра и ASP.NET
- 6. Модули ядра и основные номера
- 7. данные ядра и подкачки
- 8. Основные данные ядра: NSFetchRequest с отдельными свойствами и секциями алфавита
- 9. Основные данные и @unionOfSets
- 10. Основные атрибуты данных ядра
- 11. Основные функции ядра SQLite
- 12. NSURLSessionDataTask отменить и основные данные
- 13. Основные данные ядра iOS NSFetchedResultController.fetchedObject возвращает данные об ошибках и (0,0) аннотацию
- 14. Местоположение ядра не отвечает
- 15. Основные данные и полупостоянные данные
- 16. Основные эквиваленты ядра для NSURLRequest и NSURLConnection
- 17. Объект модели и основные данные
- 18. NSUserdefault и основные данные
- 19. GCD и основные данные
- 20. Основные данные и NSOperation
- 21. InAppSettingsKit и основные данные
- 22. Основные данные и NSDate
- 23. Основные данные и UIActivityViewController
- 24. Основные данные и многопоточность
- 25. Основные данные и предикат
- 26. UICollectionView и основные данные
- 27. NSSet и основные данные
- 28. Основные данные и TabViewController
- 29. Основные данные и JSON
- 30. Основные данные и didSelectRowAtIndexPath
Похоже, полезный код, спасибо. –
Спасибо за это - я использовал что-то подобное в своем приложении. Но мне кажется, что оба набора < and > - это неправильный путь! – iPhoneDollaraire
Вы правы - oops! – deanWombourne