Подтвердить что ты не робот

Как удалить все аннотации карт в swift 2

У меня был рабочий код, чтобы удалить все аннотации с помощью кнопки, но после моего обновления до xcode 7 я столкнулся с ошибкой:

Тип "MKAnnotation" не соответствует протоколу "SequenceType"

if let annotations = (self.mapView.annotations as? MKAnnotation){
    for _annotation in annotations {
        if let annotation = _annotation as? MKAnnotation {
            self.mapView.removeAnnotation(annotation)
        }
    }
}
4b9b3361

Ответ 1

В Swift 2 annotations объявлен как необязательный массив [MKAnnotation], поэтому вы можете легко написать

let allAnnotations = self.mapView.annotations
self.mapView.removeAnnotations(allAnnotations)

без кастования типов.

Ответ 2

self.mapView.removeAnnotations(self.mapView.annotations)

Если вы не хотите удалять местоположение пользователя.

self.mapView.annotations.forEach {
  if !($0 is MKUserLocation) {
    self.mapView.removeAnnotation($0)
  }
}

Примечание. Objective-C теперь имеют дженерики, больше не нужно создавать элементы массива аннотаций.