2

次のような NSPredicate が必要です。

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

私は基本的に から一定の距離内にある Core Data の GPS 座標を見つけたいと思っていますuserLocation

  • latitude各 gps エンティティの緯度属性です。

  • coordsLatitudeuserLocation の緯度です。

  • kMaxLatLong1に設定されています

私はEXC_BAD_ACCESSこの行で取得しています。述語、特に減算演算子の形式が悪いためだと思います。ただし、NSPredicates や NSExpressions で減算を使用する方法を示すものは見つかりませんでした。

4

1 に答える 1

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 を使用します。

于 2013-02-02T20:32:07.103 に答える