我在mapView中有4-5种不同的注释类。 使用以下代码,我希望只有AnnotationType1应该响应for循环。
for (AnnotationType1* annotation in mymap.annotations)
{
NSLog(@"annotation class is %@", [annotation class]);
}
但是从控制台可以看出我也得到了其他课程。
annotation class is AnnotationType1
annotation class is AnnotationType2
annotation class is AnnotationType3
annotation class is AnnotationType4
仅对AnnotationType1注释执行操作的最佳方式是什么?
答案 0 :(得分:1)
首先,正如您所发现的那样,快速迭代不会像您想象的那样工作。 mymap.annotations
返回相同的注释对象数组,无论如何 - 它不知道你将它们分配给哪种指针。
其次,通常认为依靠视图(例如MKMapView)来存储数据(比如注释)是一个坏主意。地图视图可以了解注释 - 它必须知道它们才能正常工作。但我不建议指望地图视图来维持应用程序的状态。您可能将注释对象存储在数据模型的某个位置 - 如果是这样,那么这将是获取注释列表的更好位置。
第三,您可以使用谓词过滤数组。 See this answer使用谓词按类名进行过滤的帮助。