App 1 - Bloc Notes (gestion du retour à la ligne)

Bonjour,

concernant la gestion du retour à la ligne après chaque note enregistrée, je me demande si l’utilisation de la conditionnelle est vraiment nécessaire ?!

Perso j’ai fait :

@IBAction func addNoteButton() {
    let typedText:String? = self.NoteToAdd.text
    if typedText != nil {
        var allNotesAdded:String = self.NoteAdded.text
        allNotesAdded = allNotesAdded + typedText! + "\n"
        self.NoteAdded.text = allNotesAdded
        self.NoteToAdd.text = ""
    }

Qu’en pensez-vous ?
Je débute sur Swift, j’ai peut-être fait une erreur sans m’en apercevoir…

Merci d’avance.

2Fan2Fail

Personne ?:confused:

Bonjour @francoisnoel62,

Personnellement, je ne comprends pas pourquoi tu fais:

if typedText != nil { ... }

Puisque typedText est un String optionnel, il vaudrait mieux déballer l’optionnel avec:

if let myText = typedText { ... }

qui permettra de vérifier directement s’il y a bien quelque chose dans typedText.
Puisque c’est un optionnel, autant utiliser les fonctionnalités qu’il nous offre :slight_smile:

Aussi, pourquoi faire:

self.NoteAdded.text = allNotesAdded
self.NoteToAdd.text = ""    // ?

Pourquoi la deuxième ligne ? Puisqu’elle n’ajoute rien au texte ?

Bonne journée,

Alexandre.

Effectivement avec un "if let"cela fonctionnerais aussi.
Mais, au moment au Maxime fait ce cours je pense qu’il à préféré le faire comme ceci pour une question de comprehension.

Pour la deuxième ligne ?
Parce que celle-ci remet le textField à zéro, c’est ta dire qu’elle enlève les caractères du champ text de ou on tape la note à rentrer.

Et pour répondre à la question si, la condition est nécessaire je dirais que oui car, si l’utilisateur appuis sur le bouton alors qu’il n’a rien mis dedans il y auras un problème.
Après c’est vrai que le format String accepte pas mal de chose: nombres, caractères, caractères spéciaux dont, l’espace qui en est un.

Autant pour moi, j’avais lu:
self.NoteAdded.text = allNotesAdded
self.NoteAdded.text = “”

Mais apres ton commentaire, effectivement, c’est plutot normal :slight_smile:

Par contre, je suis d’accord avec @ThonyF sur le fait qu’il faut vérifier qu’il y ait bien quelque chose dans le champ texte, car si celui-ci est nil, alors l’application risque de planter…

Merci pour vos contributions :wink:
Grâce à vos commentaires, j’ai pu comprendre l’objet de ma requête.

Petite info complémentaire : si aucun texte n’est dans le champ texte la propriété text du UITextField ne sera pas à nil mais sera une chaîne vide "".
A l’heure actuelle je n’ai jamais vu de cas où cette proriété était vide mais peut être que les versions futures de iOS seront différentes et dans tous les cas, si la variable est de type optionnelle, il faut la traiter comme un risque.
Je pense qu’ils ont laissé un optionnel pour nous permettre de vider le champ texte en faisant : monChampTexte.text = nil mais qu’ils le remplacent immédiatement par un "" juste après l’affectation