Core Data and Core Location
Solution 1:
You will have to iterate through them one by one; as far as I know there is no other way to do it.
However, you can make this more efficient by using a bounding box when you get the items from core data - this will reduce the number of objects that will be returned.
i.e. Something like
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];
Though, depending on how much data you have and how closely it's spaced, you will want to use a different number than 1!
Sam
PS Also, I haven't taken into account the fact that longitude wraps!
Solution 2:
You can't use CoreData to find the nearest object, but might want to narrow down the query by using a bounding box. To find the nearest object, you might prefer to use simply the difference in lat/long which is considerably faster than calculating the actual distances.
I had a similar question:
CoreData: Find minimum of calculated property