Le protocole peut être utilisé uniquement comme une contrainte générique

J'ai un MapViewController pour la présentation des annotations sur la carte. Il contient un
objet de type MapPresentable.

protocol MapPresentable {
    associatedtype AnnotationElement: MKAnnotation
    var annotations: [AnnotationElement] { get }
}

class MapViewController<M: MapPresentable>: UIViewController {
    var mapPresentable: M!
}

MapViewController peut également présenter de l'itinéraire sur la carte en cas de mapPresentable est conforme à RoutePresentable protocole.

protocol RoutePresentable: MapPresentable {
    var getRouteLocations: [CLLocation] { get }
}

Mais lors de la vérification faite à l'intérieur de MapViewController

if let routePresentable = mapPresentable as? RoutePresentable {
    showRoute(routePresentable.getRouteLocations)
}

J'ai eu cette Erreur:

Protocol 'RoutePresentable' can only be used as a generic constraint because it has Self or associated type requirements

OriginalL'auteur GeRyCh | 2016-10-30