NSPredicate中的减法

时间:2013-02-02 20:25:04

标签: objective-c nspredicate

我想要像这样的NSPredicate:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(latitude - %@) < %@",coordsLatitude, kMaxLatLong];

我基本上想在核心数据中找到距userLocation一定距离的GPS坐标。

  • latitude是每个gps实体的纬度属性。

  • coordsLatitude是userLocation的纬度。

  • kMaxLatLong设为1

我正在使用此行获得EXC_BAD_ACCESS。我认为这是由于我的谓词形成不良,特别是减法运算符。但是,我找不到任何说明如何使用NSPredicates减法,也没有使用NSExpressions。

1 个答案:

答案 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。