使用坐标和NSPredicate过滤MKAnnotations的NSSet

时间:2014-08-14 17:17:01

标签: ios objective-c cocoa-touch nspredicate mkannotation

我获得了NSSet MKAnnotation个获得者:

NSSet *locationSet = [map annotationsInMapRect:map.visibleMapRect];

然后我写一个NSPredicate来传递所需的纬度和经度:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"coordinate.latitude == %f AND coordinate.longitude == %f", coord.latitude, coord.longitude];

现在我尝试通过过滤集合来获取所需的对象:

NSSet *filtered = [locationSet filteredSetUsingPredicate:predicate];
MKAnnotationSubClass *mark = [[filtered allObjects] lastObject];

但是得到一个错误,说我的对象没有我通过的密钥:

  

由于未捕获的异常而终止应用程序' NSUnknownKeyException',原因:' [valueForUndefinedKey:]:此类不是密钥值编码兼容的密钥纬度。'`

使用纬度和经度参数过滤此NSSet注释的正确方法是什么?

1 个答案:

答案 0 :(得分:2)

CLLocationCoordinate2D不符合键值编码,因此您无法在此对象上使用[NSPredicate predicateWithFormat:]方法(按其属性进行过滤)。

使用[NSPredicate predicateWithBlock:]代替您,您将获得相同的结果。