Ответ 1
В Swift 2 annotations
объявлен как необязательный массив [MKAnnotation]
, поэтому вы можете легко написать
let allAnnotations = self.mapView.annotations
self.mapView.removeAnnotations(allAnnotations)
без кастования типов.
У меня был рабочий код, чтобы удалить все аннотации с помощью кнопки, но после моего обновления до 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)
}
}
}
В Swift 2 annotations
объявлен как необязательный массив [MKAnnotation]
, поэтому вы можете легко написать
let allAnnotations = self.mapView.annotations
self.mapView.removeAnnotations(allAnnotations)
без кастования типов.
self.mapView.removeAnnotations(self.mapView.annotations)
Если вы не хотите удалять местоположение пользователя.
self.mapView.annotations.forEach {
if !($0 is MKUserLocation) {
self.mapView.removeAnnotation($0)
}
}
Примечание. Objective-C теперь имеют дженерики, больше не нужно создавать элементы массива аннотаций.