Bji*_*nse 5 iphone core-data objective-c core-location
我想在距离当前位置的距离上排序很多位置(航点).当然,当前位置是移动目标,因此对于每个位置更新,重新计算每个位置的距离是必要的.但只有重新计算附近的位置就足够了.
我目前使用核心数据,并在configurecell:atindexpath:方法中将距离存储为当前位置作为表中的属性(但仅在更改时更新).这类工作,但应用程序没有响应,而核心数据自动更新所有距离.这适用于250个位置,但是5000个崩溃.我需要它才能在10.000个位置工作,尽管我可能只需要距离最近的1000个位置.
我还没有尝试过的想法:将所有距离存储在一个单独的内存数组中,只记录记录ID和距离.然后按距离对数组进行排序.问题是我不能使用FetchedResultsController,因为数据库中没有排序字段.
使用谓词根据纬度和经度过滤位置.然后只显示过滤后的位置.
在单独的线程中重新计算距离.
这些想法似乎都不容易尝试.
任何有建议,不同想法,我的想法变化的人?
我的最终解决方案如下:我选择1度纬度和经度内的所有航点(通常大约1000个航点),然后计算并存储到表中的当前位置的距离。然后我可以根据距离进行排序。缓慢的事情是核心数据的保存。但在排序(和获取)之后,我只是取消更改。节省了整个事情的 90% 以上,因此效果非常好。
| 归档时间: |
|
| 查看次数: |
1590 次 |
| 最近记录: |