我正在整理商店以获得最近的商店.
此外,我想知道这家商店有多远.
SQL查询看起来像这样:
此外,我想知道这家商店有多远.
SQL查询看起来像这样:
select *,6371 * 2 * atan2(SQRT(POWER(SIN((RADIANS(?) - RADIANS(latitude))/2),2) + COS(RADIANS(latitude)) * COS(RADIANS(?)) * POWER(SIN((RADIANS(?) - RADIANS(longitude))/2),2)),SQRT(1-POWER(SIN((RADIANS(?) - RADIANS(latitude))/2),2))) AS DISTANCE FROM stores ORDER BY DISTANCE
这些问号将被用户位置的经度和纬度所取代.
(纬度,纬度,经度,经度)
如何使用Core Data使用iPhone SDK实现这一目标?
解决方法
CoreData本身不能真正做到这一点,因为这里的distanceFromCurrentLocation将是一个瞬态属性(并且你无法获取瞬态属性).但是,您仍然可以通过将对象提取到NSMutableArray中,然后基于distanceFromCurrentLocation transient属性对该数组进行排序,以自然的方式执行此操作.
根据您执行此操作的频率以及用户移动到需要重新计算的频率,有时可能更有效地重新计算-currentDistance持久属性,然后使用简单谓词.如果您经常搜索用户移动,这是一个非常有效的解决方案,因为您可以轻松地保留单个locationOfLastRecalculation持久变量,并且只有在用户充分移动时才重新计算一次.由于这会在重新启动后持续存在,因此与动态计算相比整体性能提升可能会很大.