Я разрабатываю приложение, которое позволяет вам искать предметы и сортировать по расстоянию от заданной точки.Подход, который я использую, заключается в том, что, когда я получаю данные из удаленного API, я вычисляю расстояние от моего текущего местоположения и сохраняю его как атрибут управляемого объекта CoreData.Это прекрасно работает, когда я сижу дома и развиваюсь дома, но когда я использую устройство, а затем перемещаю устройство в другое место, атрибуты становятся неверными, поскольку теперь расстояние изменилось для всех элементов.
Подход, который я рассматриваю, заключается в том, чтобы пройти через все основные хранилища данных и обновить атрибут расстояния, когда iPhone меняет местоположение.
Очевидная проблема заключается в том, что я не могу сделать это для каждого отдельного движения, посколькуЯ буду бегать по всему хранилищу CoreData каждый раз, когда пользователь движется на дюйм.Это может привести к потере заряда батареи и замедлению работы пользователя.
Некоторые решения:
- Я мог бы ограничить количество элементов, которые я храню в основных данных.В целом не должно быть более 100 или около того соответствующих элементов.
- Я мог бы ограничить количество раз, когда пересчет происходит, только пересчитывая, когда местоположение пользователя изменяется на какое-то значительное расстояние.
- Я мог бы сделать все пересчеты в фоновом режиме.
Хотя эти решения, вероятно, должны работать, я думаю, что должно быть более элегантное решение.
Кто-нибудь решил подобную проблему с этим?