Я хочу отсортировать множество мест (путевых точек) по их удалению от текущего местоположения.Текущее местоположение, конечно, является движущейся целью, поэтому для каждого обновления местоположения необходимо пересчитывать расстояние для каждого местоположения.Но достаточно только повторного вычисления для близлежащих местоположений.
В настоящее время я использую данные ядра и сохраняю расстояние до текущего местоположения в качестве атрибута в таблице (но только обновление происходит, когда оно изменяется) извнутри configurecell: atindexpath: метод.Это работает, но приложение не отвечает, в то время как данные ядра автоматически обновляют все расстояния.Это работает для 250 местоположений, но для 5000 это терпит крах.Мне нужно, чтобы он работал на 10.000 местоположений, хотя, вероятно, мне нужны только 1000 ближайших местоположений или около того.
Идеи, которые я еще не пробовал: хранить все расстояния в отдельном массиве в памяти, не используя ничего, кроме идентификатора записии расстояние.Затем отсортируйте массив по расстоянию.Проблема в том, что тогда я не могу использовать FetchedResultsController, потому что в базе данных нет поля сортировки.
Фильтрация местоположений на основе их широты и долготы с использованием предиката.Затем представьте только отфильтрованные местоположения.
Выполните пересчет расстояний в отдельном потоке.
Ни одна из идей не кажется достаточно простой, чтобы просто опробовать ее.
Любой, у кого естьпредложения, разные идеи, вариация моих идей?