Estoy desarrollando una aplicación que le permite buscar elementos y ordenar por distancia desde un punto determinado. El enfoque que estoy usando es que cuando ingiero los datos de la API remota, calculo la distancia desde mi ubicación actual y la almaceno como un atributo del objeto gestionado CoreData. Esto funciona perfectamente bien cuando estoy sentado allí desarrollando en casa, pero cuando uso en el dispositivo, luego muevo el dispositivo a una ubicación diferente, los atributos son incorrectos ya que la distancia ahora ha cambiado para todos los elementos.Ordenando elementos geospaciales utilizando coredata en iOS. La forma más rápida de actualizar todos los atributos de 'distancia'
El enfoque que estoy considerando es ejecutar a través de todo el almacén de datos central y actualizar el atributo de distancia cuando el iPhone cambia de ubicación.
El problema obvio es que no puedo hacer esto para cada movimiento, ya que estaría corriendo por la tienda CoreData completa cada vez que el usuario se mueve una pulgada. Esto mataría a la batería y ocasionar una experiencia de usuario lenta
Algunas soluciones:
- que podría limitar el número de artículos que tienda a tipos de datos básicos. No debería haber más de 100 artículos relevantes en general.
- Podría limitar el número de veces que se realiza el recálculo recalculando solo cuando la ubicación del usuario cambia en una distancia considerable.
- Podría hacer todos los recálculos en el fondo.
Si bien estas soluciones probablemente funcionen, imagino que debe haber una solución más elegante.
¿Alguien ha resuelto un problema similar a esto?