Datos principales y ubicación principal

Tengo una base de datos Core Data con propiedades de latitud y longitud. ¿Hay alguna manera de utilizar el método getDistanceFrom: Core Location para encontrar las cinco ubicaciones más cercanas a una CLLocation obtenida del GPS? ¿Tengo que cargar todos los objetos usando Core Data y analizarlos, usando getDistanceFrom: en cada uno o hay una manera más fácil?

Tendrás que iterar a través de ellos uno por uno; por lo que sé, no hay otra manera de hacerlo.

Sin embargo, puede hacer que esto sea más eficiente al usar un cuadro delimitador cuando obtiene los elementos de los datos centrales, esto reducirá la cantidad de objetos que se devolverán.

es decir, algo así como

 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]; 

Sin embargo, dependiendo de la cantidad de datos que tenga y qué tan espaciados estén, ¡tendrá que usar un número diferente de 1!

Sam

PD: ¡Además, no he tenido en cuenta el hecho de que la longitud se envuelve!

No puede usar CoreData para encontrar el objeto más cercano, pero podría querer restringir la consulta utilizando un cuadro delimitador. Para encontrar el objeto más cercano, quizás prefiera usar simplemente la diferencia en lat / long, que es considerablemente más rápido que calcular las distancias reales.

Tenía una pregunta similar:

CoreData: Encuentre un mínimo de propiedad calculada

El siguiente ejemplo es casi lo que estás buscando. Utiliza una función SQLite para calcular la distancia en la cláusula ORDER BY (fórmula Haversine). El problema es que este ejemplo no usa Core-Data, sino la API de SQLite directamente.

http://www.thismuchiknow.co.uk/?p=71