22 juillet 2025 - SwiftUI et premiers pas avec SwiftData
Salut ! Me voilà de retour après une petite pause hier pour la fête nationale belge. J’ai tout de même maintenu le minimum avec les 100 Days of SwiftUI - le challenge et quelques exercices - mais j’ai surtout profité de cette journée pour me reposer.
#
Side project : prototype de jeu vidéo
J’ai commencé à expérimenter avec un prototype de jeu vidéo en vibe coding, ce qui m’a passionné ! Pour le moment, c’est juste au stade de prototype, mais si ça avance bien, je te tiendrai au courant dans le futur.
#
Apprentissages du jour : 20ème jour des 100 Days
Aujourd’hui, nous avons découvert la théorie pour le deuxième projet : “Guess the Flag” (devine le drapeau). Voici ce que j’ai appris :
##
Backgrounds et effets visuels
- Backgrounds : comment créer des arrière-plans
- Couleurs et gradients : effets linéaires et autres
- Gestion des images : intégration et manipulation
- SF Symbols : première exploration de cette bibliothèque d’icônes
##
Alertes en SwiftUI
Les alertes fonctionnent différemment des autres langages. On ne dit pas “affiche une alerte maintenant”, mais plutôt :
- On configure l’alerte
- On l’active avec un booléen
- Swift décide du bon moment pour l’afficher
Cette approche déclarative est vraiment différente de ce qu’on trouve ailleurs !
##
Formatage et style
J’ai aussi découvert :
- Labels et leur utilisation
- Padding et espacement
- Foreground/background pour les couleurs
- Corner radius pour arrondir les angles
- Formatage de texte avancé
##
Ajout d’assets
Paul Hudson a expliqué comment ajouter des assets au projet, et j’ai directement mis en pratique en intégrant des fonds d’écran dans mes exercices.
#
Pratique intensive : Learning App
Plutôt que de travailler sur “Guess the Flag”, j’ai préféré expérimenter dans mon application d’apprentissage pour mélanger les anciens concepts avec les nouveaux.
##
Fonctionnalités implémentées
- Toggles pour afficher/masquer différents éléments :
- Fond d’écran vs couleur pleine
- Respect ou non de la safe area
- Ternary operators pour les conditions
- Pickers pour la sélection
- Customisation des boutons selon le fond d’écran choisi
##
Défis rencontrés
- Gestion des couleurs de texte pour assurer la visibilité selon le fond
- Thèmes clair/sombre : pas encore totalement maîtrisé
- Alertes dynamiques qui apparaissent selon les interactions
##
Logique des boutons
J’ai créé une petite fonction qui :
- Détecte quel bouton a été cliqué
- Change la couleur selon le bouton sélectionné
- Gère l’état programmatiquement
#
Début du projet portfolio : Fidelity App
Cet après-midi, j’ai commencé à travailler sur ma première application du portfolio : l’app de cartes de fidélité.
##
Découverte de SwiftData
Je me suis rendu compte qu’il me manquait des connaissances sur SwiftData, alors j’ai un peu “triché” en regardant des vidéos YouTube de Paul Hudson sur le sujet. J’ai fait attention à ne pas trop me spoiler le contenu des 100 Days !
##
Ce que j’ai réalisé aujourd’hui
- Création d’un data model avec SwiftData
- Page de login simplifiée (pas un vrai login, juste stockage de données)
- Tests de modification du nom d’utilisateur
- Stockage dans le modèle User via SwiftData
##
Questions en suspens
Je ne suis pas encore sûr de la meilleure façon de gérer le state management :
- Données utilisateur (nom, statut de connexion) dans SwiftData ?
- Ou séparation entre données persistantes et état de l’app ?
Cette distinction entre les différents types de données n’est pas encore claire pour moi
##
Stratégie de développement
J’ai décidé d’adopter cette approche pour mon premier projet :
- Fonctionnalités d’abord : implémenter le MVP sans se soucier du design
- Layout ensuite : une fois que tout fonctionne, passer au beau design
- Cohérence finale : aligner avec les prototypes HD présentés au client fictif
#
Réflexions sur cette journée
Malgré un petit coup de flemme en fin d’après-midi (j’ai zappé le sport…), c’était une journée productive.
Le fait de travailler en parallèle sur la théorie et un projet concret m’aide énormément à ancrer les apprentissages.
À demain pour de nouveaux défis !
Alessandro