核心数据和核心位置

nev*_*ing 24 iphone cocoa-touch core-data objective-c core-location

我有一个具有纬度和经度属性的Core Data数据库.有没有办法使用Core Location的getDistanceFrom:方法找到CLLocation从GPS获得的五个最近的位置?我是否必须使用Core Data加载所有对象并通过它们进行解析,使用getDistanceFrom:每个对象还是有更简单的方法吗?

dea*_*rne 29

你将不得不逐个迭代它们; 据我所知,没有别的办法可以做到.

但是,当您从核心数据中获取项目时,可以通过使用边界框来提高效率 - 这将减少将返回的对象数量.

即喜欢的东西

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];
Run Code Online (Sandbox Code Playgroud)

但是,根据您拥有的数据量和间隔距离,您需要使用不同于1的数字!

山姆

PS此外,我还没有考虑到经度包裹的事实!