我获得了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
注释的正确方法是什么?
答案 0 :(得分:2)
CLLocationCoordinate2D
不符合键值编码,因此您无法在此对象上使用[NSPredicate predicateWithFormat:]
方法(按其属性进行过滤)。
使用[NSPredicate predicateWithBlock:]
代替您,您将获得相同的结果。