我有一个核心数据数据库与纬度和经度属性。有没有一种方法可以使用核心位置的getDistanceFrom:方法来找到离CLLocation最近的五个位置?我是否必须使用核心数据加载所有对象并对它们进行解析,在每个对象上使用getDistanceFrom:,还是有更简单的方法?
发布于 2010-02-01 19:10:25
您必须逐个迭代它们;据我所知,没有其他方法可以做到这一点。
但是,当您从核心数据获取项目时,您可以通过使用边界框来提高效率-这将减少将返回的对象的数量。
也就是说,类似于
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的数字!
相同的
另外,我还没有考虑到经度换行的事实!
发布于 2010-02-01 19:10:02
不能使用CoreData查找最近的对象,但可能需要使用边界框来缩小查询范围。要找到最近的对象,您可能更喜欢简单地使用经度/经度的差异,这比计算实际距离要快得多。
我也有一个类似的问题:
https://stackoverflow.com/questions/2176127
复制相似问题