У меня есть записи в моем хранилище Core Data со свойствами широты и долготы. Теперь мне нужно найти запись, ближайшую к заданному месту. В SQL я бы сделал это так:
select t.lat
,t.lon
,(t.lat-varLat) + (t.lon - varLon) diff
from table t
order by diff ASC.
заданные varLat и varLon - это координаты местоположения, к которому я хочу ближайшую запись. Однако я понятия не имею, как это сделать в Core Data с помощью NSPredicate.
Худшее, что я могу себе представить, - это цикл fetchrequests с предикатом, который расширяет «диапазон поиска» вокруг заданного (varLat, varLon), и использование longitude BETWEEN %@ && latitude BETWEEN %@
с двумя массивами (каждый из которых имеет центр + и центральный радиус в качестве членов массива) в качестве параметров, каждый время расширять этот диапазон, пока я не получу хит ... однако это далеко не оптимально.
Спасибо за ваш совет.