Мне нужно создать протокол, который наследуется от MKAnnotation:MKAnnotation наследование протокола
protocol Annotable: MKAnnotation {
...
}
class Annotation: NSObject, Annotable {
var title: String?
var coordinate: CLLocationCoordinate2D
init(title: String, coordinate: CLLocationCoordinate2D) {
self.title = title
self.coordinate = coordinate
}
}
Там нет никаких проблем, когда я добавляю пару этих аннотаций к MAPview.
mapView.addAnnotations([Annotation(...), Annotation(...), ...]
Но когда я пытаюсь петлю на коллекции аннотаций, приложение падениям во время выполнения:
for annotation in mapView.annotations { // fatal error: NSArray element failed to match the Swift Array Element type
print(annotation.title)
}
Мой вопрос прост: почему?
Поскольку аннотация соответствует MKAnnotation, неудивительно, что они могут быть добавлены в mapView. Так почему бы нам не получить их?
Большое спасибо!
Удивление, если это останавливает крах? let pins = [Annotation (...), Annotation (...), Annotation (...), ...] .map ({$ 0 as MKAnnotation}) mapView.addAnnotations (pin) – DogCoffee
Помогает ли это - I с аналогичной проблемой с картакитом и протоколами некоторое время назад. http://stackoverflow.com/questions/32237753/conform-to-protocol-mkannotation-via-custom-protocol – DogCoffee
@DogCoffee карта MKAnnotation не помогает. – adauguet