我想要像这样的NSPredicate:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(latitude - %@) < %@",coordsLatitude, kMaxLatLong];
我基本上想在核心数据中找到距userLocation
一定距离的GPS坐标。
latitude
是每个gps实体的纬度属性。
coordsLatitude
是userLocation的纬度。
kMaxLatLong
设为1
我正在使用此行获得EXC_BAD_ACCESS
。我认为这是由于我的谓词形成不良,特别是减法运算符。但是,我找不到任何说明如何使用NSPredicates减法,也没有使用NSExpressions。
答案 0 :(得分:3)
我会反过来这样做。
计算最小纬度和最大纬度,然后使用谓词查找之间的所有内容。
即
float coordsLatitude = //whatever
float minLatitude = coordsLatitude - kMaxLatLong;
float maxLatitude = coordsLatitude + kMaxLatLong;
NSPredicate *minPredicate = [NSPredicate predicateWithFormat:@"latitude >= %f", minLatitude];
NSPredicate *maxPredicate = [NSPredicate predicateWithFormat:@"latitude <= %f", maxLatitude];
NSPredicate *compoundPredicate = [NSCompoundPredicate andPredicateWithSubPredicates:@[minPredicate, maxPredicate]];
然后在获取请求中使用compoundPredicate。