Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 在MKMapView中搜索特定的MKAnnotation类_Iphone_Ios_Filter_Mkmapview_Mkannotation - Fatal编程技术网

Iphone 在MKMapView中搜索特定的MKAnnotation类

Iphone 在MKMapView中搜索特定的MKAnnotation类,iphone,ios,filter,mkmapview,mkannotation,Iphone,Ios,Filter,Mkmapview,Mkannotation,我在mapView中有4-5种不同的注释类。 对于以下代码,我希望只有AnnotationType1应该响应for循环 for (AnnotationType1* annotation in mymap.annotations) { NSLog(@"annotation class is %@", [annotation class]); } 但从控制台中可以明显看出,我还得到了其他类 annotation class is AnnotationType1 annotatio

我在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

仅在say AnnotationType1 annotation上执行操作的最佳方式是什么?

首先,正如您所发现的,快速迭代的工作方式与您所认为的不同
mymap.annotations
返回相同的注释对象数组——它不知道您将它们分配给什么类型的指针

其次,通常认为依靠视图(如MKMapView)来存储数据(如注释)是个坏主意。地图视图可以了解注释——它必须了解注释才能正常工作。但我不建议依靠地图视图来维持应用程序的状态。您可能已经将注释对象存储在数据模型中的某个地方了——如果是这样,那将是获取注释列表的更好地方


第三,可以使用谓词过滤数组。有关使用谓词按类名筛选的帮助。

非常感谢@Caleb。这是非常有用的。我将使用单独的数组来存储不同类型的注释类型。