我试图通过删除可见区域之外的所有注释,并在可见区域内添加和删除一些注释来更新MKMapView.这是我的代码:

NSSet *visibleAnnotations = [mapView annotationsInMapRect:[mapView visibleMapRect]];
NSSet *allAnnotations = [NSSet setWithArray:[mapView annotations]];
NSMutableSet *nonVisibleAnnotations = [NSMutableSet setWithSet:allAnnotations];
[nonVisibleAnnotations minusSet:visibleAnnotations];
[mapView removeAnnotations:(NSArray *)nonVisibleAnnotations];

NSMutableSet *newAnnotations = [NSMutableSet setWithArray:[_zoomLevels objectAtIndex:clusterLevel]];
[newAnnotations minusSet:visibleAnnotations];
[mapView addAnnotations:(NSArray *)newAnnotations];

这在最后一行之后给出了错误-[__NSCFSet objectAtIndex:]: unrecognized selector sent to instance 0x13cd40,在最后一行中,我将新注释投射到NSArray,然后添加注释.将一个数组投射到一个集合中会导致这种情况吗?如果是这样的话,有办法解决吗?

推荐答案

尽管你投了NSMutableSetNSArray,但这个简单的投法不会让NSSet类回复NSArray的消息.你必须用NSSet中的元素填充一个实际的NSArray,如下所示:

NSArray *array = [theNsSet allObjects];

Objective-c相关问答推荐

UIRefreshControl iOS 6 xcode

自动布局和按下时隐藏底栏

BSXPCMessage 收到消息错误:连接中断

主队列上的 dispatch_sync 在单元测试中挂起

xcode storyboard Container View - 如何访问视图控制器

如何在 iOS 上将图像旋转 90 度?

在Objective-C中替换字符串中的一个字符

distanceFromLocation - 计算两点之间的距离

如何以编程方式移动 UIScrollView 以集中在键盘上方的控件中?

AdMob 因 [GADObjectPrivate changeState:] 崩溃:无法识别的 Select 器

获取字符串的最后 2 个字符?

检测 iOS 应用程序是否在调试器中运行

隐藏 NSTableView 标头?

如何从设置屏幕打开位置服务屏幕?

添加/删除带有动画的 UITableViewCell?

检测 UITableView 滚动

最大 CGFloat 值是否有常数?

NSNumber 和 NSInteger 有什么区别?

Xcode没有编译任何项目? 'clang 失败,退出代码 255'

无法更改 UILabel 文本 colored颜色