Я пытаюсь удалить наложения с карты.swift удалить наложения карт
func removeMapOverlay() {
var removeOverlays : [AnyObject]! = self.mapView.overlays
// Above line throws runtime exception
self.mapView.removeOverlays(removeOverlays)
}
self.mapView.overlays
является типом AnyObject
массива. var overlays: [AnyObject]! { get }
.
Так я изначально написал
var removeOverlays = self.mapView.overlays
Он бросает EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)
исключение в этой строке на время выполнения.
Так что я сделал литье для [AnyObject]
Я не знаю, что это правильно или нет, но все равно дает мне такое же исключение во время выполнения.
Edit:
То, что я сделал для Objective C кода был:
- (void) removeMapOverlay {
[self.mapView removeOverlays:[self.mapView overlays]];
NSMutableArray *tempArray = [NSMutableArray arrayWithArray:[self.mapView annotations]];
if ([tempArray containsObject:[MKUserLocation class]]) {
[tempArray removeObject:[MKUserLocation class]];
}
NSArray *annotationArray = [NSArray arrayWithArray:tempArray];
tempArray = nil;
[self.mapView removeAnnotations:annotationArray];
}
Я попытался создать подобный метод в Swift. Но это вызывает исключение, как я объяснял выше.
Убедитесь, что 'self.mapView' не' nil'. – Anna
@ Anna 'mapview' является' IBOutlet', и это не ноль. – Kampai