Вам придется перебирать их по очереди; насколько я знаю, другого способа сделать это нет.
Однако вы можете сделать это более эффективным, используя ограничивающий прямоугольник, когда вы получаете элементы из базовых данных - это уменьшит количество возвращаемых объектов.
т.е. Что-то вроде
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];
Хотя, в зависимости от того, сколько у вас данных и насколько близко они расположены, вы можете использовать другое число, чем 1!
Sam
PS Кроме того, я не учел тот факт, что долгота оборачивается!