Créez une app avec Swift Playgrounds #3 : générer le mot de passe

Florent Morin |

Dans cette troisième partie de notre initiation à la création d’apps en utilisant Swift Playgrounds sur un iPad, nous allons créer la vue qui affichera le mot de passe généré pour l’utilisateur et toute la logique associée. Pour partir du bon pied, vous pouvez télécharger le code de l’étape précédente directement sur le dépôt GitLab de MacG. Pour mieux apprendre, il reste préférable de suivre le tutoriel de bout en bout et les deux premiers chapitres restent disponibles :

Créez une app avec Swift Playgrounds #1 : préparation du projet

Créez une app avec Swift Playgrounds #1 : préparation du projet

Créez une app avec Swift Playgrounds #2 : création des réglages

Créez une app avec Swift Playgrounds #2 : création des réglages

Et si vous perdez au cours de ce chapitre, vous trouverez aussi l’intégralité du code source à cette adresse.

Création de la vue de résultat

Comme son nom le suggère, la vue de résultat va afficher le mot de passe généré par notre app, avec un compteur qui présente le nombre de caractères. Un bouton permettra de copier ce mot de passe pour le saisir sur un site web ou dans une autre app.


avatar Moitah | 

C'est vraiment top, bravo !

avatar Florent Morin | 

@Moitah

Merci. J’attendais ce premier commentaire car le code de cette partie est complexe. 😅

avatar Tomtomrider | 

@FloMo

Moi j’attend d’avoir du temps ce week-end pour lire cette série. J’ai pas encore regardé mais n’ayant aucune base, je crains le pire 😅
Dans tous les cas ça sera intéressant je pense 👍🏻

avatar Florent Morin | 

@Tomtomrider

Normalement, à chaque étape, on a fait en sorte de pouvoir télécharger le fichier en cours actualisé.

Et, à la fin de chaque chapitre, on peut télécharger le résultat. Histoire que tout le monde puisse suivre.

avatar macbook60 | 

@FloMo

Pouvez vous faire un livre 📕 pas mal de personnes ont l’air intéressés merci pour cette série

avatar cyberfred38 | 

Merci infiniment pour cette série très bien faite.

avatar frankm | 

Merci pour ce pas-à-pas.
Je commence à m’en sortir @Binding, @State, private var, etc.

avatar Chtimi92 | 

Plusieurs erreurs de ma part malgré le fait d’avoir suivi scrupuleusement le pas à pas, sans doute des soucis de placement de ligne de code.
J’ai dû copier le fichier ContentView et Settings à partir du Serveur. Mais ça fonctionne ouffff
Merci beaucoup pour le tuto, j’ai appris pleins de choses.

avatar bureaun | 

Merci pour cette série ! Il reste encore des choses un peu obscures pour moi, comme les @State ou @Binding, ou le $0 de la fonction flatMap, mais c’est globalement très intéressant !

Juste une petite erreur que j’ai repérée au moment de l’ajout de .onChange et .onAppear. Il est indiqué « ajoutez ce code juste après la fermeture du body ». En réalité, c’est juste avant la fermeture du body me semble-t-il…

avatar Florent Morin | 

@bureaun

Ha oui. C’est une coquille de notre part.

avatar lolodeville | 

Un Grand merci pour ce projet très interessant. J’ai coupé collé le code pour generateSpecialCharacteres et j’ai du réécrire le texte entre () de la fonction… specialCharacteresCount
Il me faisait une erreur… Et là tout fonctionne…
Top…
A suivre pour le chapitre 4…

avatar fif | 

Merci pour cette découverte.
Pour ma part j’ai des questions parce que je ne comprends pas toujours la syntaxe.
Ce bout de code ressemble furieusement à une fonction pourtant elle n’est pas déclarée comme telle :
private var message: String
if isValid {
return "\(value.count) caractères"
}
else {
return "\(minimumLength) caractères requis"
}
????

J’ai également tenté de placer le minimumLength dans les settings mais ce n’est pas propagé dans le reste des classes notamment sur un nouveau slider. Même la colorisation de la syntaxe n’est pas la meme..
Comprends pas

Enfin,
0..

avatar mulot | 

Hello fif,

C'est en effet une variable et non une fonction mais la variable est ici initialisé par un bloc de code (une closure en dev) comme ce qu'on retrouve dans les fonctions. C'est juste que le bloc de code est exécuté à l'initialisation de la variable et ne peut pas être réappelé comme avec une fonction.

Perso je ne suis pas fan d'initialiser les variables avec une closure mais ca a le mérite d'être efficace.

CONNEXION UTILISATEUR