Comment puis-je supprimer tous les carte annotations dans swift 2
J'ai eu à travailler le code pour supprimer tous les carte annotations avec un bouton, mais après ma mise à jour de xcode 7 je suis en cours d'exécution dans l'erreur:
Type 'MKAnnotation' n'est pas conforme à un protocole de type de séquence'
if let annotations = (self.mapView.annotations as? MKAnnotation){
for _annotation in annotations {
if let annotation = _annotation as? MKAnnotation {
self.mapView.removeAnnotation(annotation)
}
}
}
Vous devez vous connecter pour publier un commentaire.
Dans Swift 2
annotations
est déclarée comme non facultatif tableau[MKAnnotation]
de sorte que vous pouvez facilement écriresans aucune conversion de type.
Si vous ne voulez pas supprimer l'emplacement de l'utilisateur.
Note: Objective-C ont maintenant des génériques, il n'est plus nécessaire de fonte les éléments de " annotations tableau.
Le problème est qu'il y a deux méthodes. On est removeAnnotation qui prend un MKAnnotation objet, et l'autre est removeAnnotations qui prend un tableau de MKAnnotations, notez le "s" à la fin de l'un et pas l'autre. Tentant de jeter de
[MKAnnotation]
, un tableau àMKAnnotation
un seul objet ou vice versa va planter le programme. La ligne de code à l'auto.mapView.annotations crée un tableau. Ainsi, si vous utilisez la méthode removeAnnotation, vous avez besoin à l'index du tableau pour un seul objet dans le tableau, comme on le voit ci-dessous:Ainsi, vous pouvez supprimer diverses annotations tout en gardant cette position. Vous devriez toujours tester votre tableau avant de tenter de retirer des objets à partir d'elle, sinon il y a la possibilité d'obtenir un hors limites ou nul d'erreur.
Remarque: l'utilisation de la méthode removeAnnotations (avec un s)supprime toutes les annotations.
Si vous obtenez un nul, ce qui implique que vous avez un tableau vide. Vous pouvez le vérifier en ajoutant un autre résultat après si comme;