Skip to main content

Alessandros's Blog - Build with freedom. Share with purpose

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 :

  1. Fonctionnalités d’abord : implémenter le MVP sans se soucier du design
  2. Layout ensuite : une fois que tout fonctionne, passer au beau design
  3. 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