7 votes

Xcode 8 dit "Voulez-vous ajouter un stub ?" Comment répondre ?

Dans Xcode 8, si vous déclarez qu'une classe (ou une structure) est conforme à un protocole, mais que vous n'avez pas implémenté les méthodes (fonctions ?) requises, Xcode affichera ce message "Type ' ClassName ' n'est pas conforme au protocole ' ProtocolName ", ce qui est vrai.

Si vous ouvrez l'erreur en cliquant sur le triangle de divulgation, vous verrez un certain nombre d'éléments avec des icônes de point d'exclamation gris. Chaque élément indique "Protocol requires function ... do you want to add a stub ?" (Le protocole requiert une fonction ... voulez-vous ajouter un stub ?). Je veux ajouter un stub ! Comment puis-je lui demander d'ajouter un talon pour moi ?

10voto

Ysix Points 120

La réponse de raphh est correcte mais xcode est encore un peu bogué ici (du moins pour moi),

Si vous ne sélectionnez pas l'option Fix-it juste après la compilation, le point se transforme en point d'exclamation et il est impossible de le faire réapparaître à moins d'essayer de compiler une nouvelle fois.

Juste après la construction : Icône d'erreur en forme de point

Lorsque vous ne faites pas le Fix-it immédiatement : point d'exclamation icône d'erreur

Vous devez reconstruire pour obtenir à nouveau l'icône du point alors que vous avez plusieurs méthodes à mettre en œuvre et que vous avez fait l'opération Fix-it pour le premier.

2voto

raphh Points 315

Il suffit de cliquer sur Fix-it et Xcode vous ajoutera le stub pour cette méthode que vous devez implémenter.

Comme ceci. Voir : enter image description here

Merci Xcode 8, enfin !

0voto

akr ios Points 471

Oui, cliquez sur 'fix it', Xcode ajoutera les méthodes et variables nécessaires comme mentionné dans votre protocole, et une autre chose, Xcode ajoutera les variables avec les permissions de lecture et d'écriture appropriées dans la classe qui implémente le protocole.

Par exemple : dans votre protocole, si vous déclarez une variable get,set et que dans votre struct/classe vous la déclarez comme une propriété 'let', alors xcode lancera une erreur disant "Voulez-vous ajouter un stub de protocole", lorsque vous cliquez sur fixer, il ajoute maintenant la propriété 'var' dans la classe/struct respectant le protocole pour une propriété get,set dans le protocole.

protocol VoiceAssistant {
var name: String {get}
var voice: String {get set}

}

struct Siri : VoiceAssistant {

 var voice: String //xcode added this, when you click 'fix it' for protocol stub
 let name = "Siri"   

let voice = "Voice" //added by me, Compilation Error: voice is not settable, but protocol requires it.

}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X