2012-01-07 52 views
0

我在mapView中有4-5種不同的註釋類。 下面的代碼我期望只有AnnotationType1應該回應for循環。在MKMapView中搜索特定MKAnnotation類

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註釋執行操作的最佳方式是什麼?

回答

1

首先,正如您發現的那樣,快速迭代不會像您認爲的那樣工作。 mymap.annotations無論如何都會返回相同的註釋對象數組 - 它不知道將哪種指針分配給它們。其次,通常認爲依靠視圖(如MKMapView)來存儲數據(如註釋)通常被認爲是一個糟糕的主意。地圖視圖知道的註釋是正確的 - 它必須知道他們的工作是否正確。但我不建議依靠地圖視圖來維護應用的狀態。您可能將註釋對象存儲在數據模型的某處 - 如果是這樣,那將是獲取註釋列表的好地方。

第三,您可以使用謂詞過濾數組。 See this answer幫助使用謂詞按類名過濾。

+0

非常感謝@Caleb。這非常有用。我將有單獨的數組來存儲不同種類的註釋類型。 – chatur 2012-01-07 06:42:53