【发布时间】:2013-11-22 18:56:53
【问题描述】:
我的核心数据存储中有纬度和经度属性的记录。现在我需要找到离给定位置最近的记录。 在 SQL 中,我会这样做:
select t.lat
,t.lon
,(t.lat-varLat) + (t.lon - varLon) diff
from table t
order by diff ASC.
给定 varLat 和 varLon 是我想要最接近记录的位置的坐标。但是我不知道如何使用 NSPredicate 在 Core Data 中执行此操作。
我能想象的最糟糕的事情是使用一个谓词循环 fetchrequests,该谓词在给定的 (varLat,varLon) 周围扩展“搜索范围”,并使用
longitude BETWEEN %@ && latitude BETWEEN %@ 有 2 个数组(每个数组都有 center+ 和 center-radius 作为数组成员)作为参数,每次都扩大这个范围直到我得到一个命中。然而,这远非最佳。
感谢您的建议。
【问题讨论】:
标签: ios objective-c core-data nspredicate nsmanagedobject