0
我有一個MKMapView。在這個視圖中,我創建了一些註釋。當用戶點擊註解泄露按鈕時,我想推入詳細視圖。發送'MKPointAnnotation * __ strong'參數的不兼容類型'ID <NSCoping>'
當我創建註釋時,我還填充了一個NSMutableDictionary,以便能夠以點爲關鍵點獲取商店對象。
當用戶選擇所述註釋,我想呼叫的DetailViewController和傳遞對象:
- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control {
DetailViewController *con = [storyboard instantiateViewControllerWithIdentifier:@"DetailViewController"];
Store *store = [annotationStoreDictionary objectForKey:view.annotation];
con.store = store;
[[self navigationController] pushViewController:con animated:YES];
}
的問題是,MKPointAnnotation是不符合NSCoping協議。它說:
Sending 'MKPointAnnotation *__strong' to parameter of incompatible type 'id<NSCoping>'
這怎麼解決?
正如@Jesper建議的那樣,子類MKPointAnnotation並添加自定義屬性以保留對註釋對象本身中每個註釋的Store的引用。單獨的字典不是必需的。另一種方法是:因爲你已經有一個'Store'類,所以只需要實現'MKAnnotation'協議並將Store對象本身添加到地圖。這樣,註釋就是商店。要創建一個實現MKAnnotation的類,請參閱http://stackoverflow.com/questions/5939223/store-data-in-mkannotation舉一個例子。 – Anna 2014-10-28 14:03:44
+1,@Anna。實施'MKAnnotation'是一個很好的選擇。 – Jesper 2014-10-28 14:05:17
@安娜,如果你提供這個答案,我會接受它!感謝您的意見,它的工作。 – doonot 2014-10-29 14:48:24