지도에서 오버레이를 제거하려고합니다.신속한지도 오버레이 제거
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]
에 대해 캐스팅을했습니다. 정확하지 않겠지 만 런타임에도 여전히 동일한 예외가 발생합니다.
편집 : 내가 목표 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];
}
내가 스위프트 비슷한 방법을 만들려고. 하지만 위에서 설명한 것처럼 예외가 발생합니다.
let overlays = mapView.overlays
mapView.removeOverlays(overlays)
을하며 작동하는 것 같다 :
처럼 전무로 오버레이를 설정합니다 'self.mapView'가'nil'이 아닌지 확인하십시오. – Anna
@Anna'mapview'는'IBOutlet'이며 그것은 0이 아닙니다. – Kampai