Skip to main content

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

30 Juin 2025 - Types de données complexes en Swift

Salut ! J’espère que tu résistes bien à cette canicule. Ici en Belgique, nous atteignons les 33 degrés aujourd’hui et c’est vraiment intense ! Malgré la chaleur, j’ai réussi à maintenir mon rythme de formation et même à faire ma séance de natation cet après-midi. 💪

# Une journée productive malgré la chaleur

Ce matin, j’ai suivi ma 3ème journée des 100 Days of SwiftUI pendant environ 2 heures. Cet après-midi, plutôt que de continuer la formation théorique, j’ai finalement décidé de me lancer dans la première semaine de mon projet portfolio : l’application de fidelité.

## Gestion de projet avec Claude

J’ai testé une approche intéressante : j’ai joué un jeu de rôle avec Claude(J’en ai parlé il y a quelques jours). Il incarnait le client, et moi le développeur freelance engagé pour le projet. Cette simulation m’a permis d’avancer rapidement sur :

  • L’identification des besoins et de la situation initiale
  • La sélection des technologies à mettre en place
  • L’analyse des données et des fonctionnalités

En 30 minutes, j’ai réussi à identifier la liste complète des librairies et technologies nécessaires.

J’ai aussi passé une heure à dessiner quelques processus utilisateurs simples. C’est crucial pour bien comprendre les besoins et ensuite créer les user stories et identifier le MVP.

## Récompense sportive

Petite victoire personnelle : j’ai gagné mon badge de 20 activités pour le mois de juin ! Et cet après-midi, j’ai nagé 1300 mètres en 48 minutes à la piscine. Un bon score, même si j’étais complètement épuisé en sortant de l’eau.


# Apprentissages du jour : Types de données complexes

Aujourd’hui, nous avons exploré les arrays, dictionnaires, sets et enums en Swift. Des concepts fondamentaux qui rappellent JavaScript, mais avec leurs spécificités.

## Arrays : les listes organisées

Les arrays en Swift ressemblent beaucoup à ceux de JavaScript, avec une différence importante : ils sont spécialisés par type (comme TypeScript 🙄). Tu ne peux pas mélanger des strings avec des intègres dans le même array.

### Déclaration des types

Il y a plusieurs façons de définir un array :

// Méthode 1
var scores = Array<Int>()

// Méthode 2  
var albums = [String]()

// Méthode 3 : avec valeurs initiales
var colors = ["rouge", "vert", "bleu"]

Le troisième exemple est très pratique : Swift devine automatiquement le type basé sur les valeurs que tu donnes !

### Fonctionnalités disponibles

Les arrays Swift proposent toutes les méthodes classiques :

  • append() : ajouter un élément
  • count : nombre d’éléments
  • remove() : supprimer un élément
  • contains() : vérifier la présence
  • sorted() : trier
  • removeAll() : vider complètement
  • reversed() : inverser l’ordre

## Dictionnaires : les paires clé-valeur

Les dictionnaires sont parfaits quand tu veux associer des informations plutôt que de naviguer par index. Imagine un employé avec son nom, son rôle, son âge…

var employee = [
    "name": "Alessandro",
    "job": "Développeur",
    "location": "Bruxelles"
]

### Gestion des valeurs inexistantes

Particularité intéressante : Swift ne plante pas si tu demandes une clé qui n’existe pas. Il retourne simplement une valeur optionnelle. Pour éviter ce comportement, tu peux définir une valeur par défaut :

print(employee["manager", default: "Unknown"])

### Types de dictionnaires

Tu peux créer des dictionnaires avec différents types :

  • String : String pour nom/valeur texte
  • Int : String pour année/ville (ex: Jeux Olympiques)
  • String : Int pour nom/taille (ex: taille des joueurs de basket)

## Sets : les collections sans doublons

Les sets ressemblent aux arrays mais avec deux différences cruciales :

  • Pas de doublons autorisés
  • Pas d’ordre conservé

### Pourquoi utiliser un set ?

Deux cas d’usage principaux :

  1. Éviter les doublons : le set vérifie automatiquement et n’ajoute que les valeurs uniques

  2. Performance : c’est là que ça devient intéressant ! Un array doit parcourir tous les éléments de l’index 0 à N pour trouver une valeur. Un set, lui, est optimisé pour la recherche. Que tu aies 5 ou 1 million d’éléments, la recherche sera ultra-rapide.

Pour de gros volumes de données où tu fais beaucoup de recherches, privilégie toujours un set !

### Spécificité des sets

Comme il n’y a pas d’index, tu n’utilises pas append() mais insert() pour ajouter des éléments.

## Enums : les valeurs prédéfinies

Les énumérations sont comme les types en JavaScript - elles définissent des valeurs autorisées.

### Exemple pratique

enum Weekday {
    case monday, tuesday, wednesday, thursday, friday
}

var day = Weekday.monday

### Avantages des enums

  • Sécurité : si quelqu’un essaie d’utiliser “janvier” comme jour de la semaine, l’app plantera
  • Lisibilité : le code est plus clair et compréhensible
  • Performance : gain d’efficacité dans l’exécution

### Raccourci pratique

Une fois qu’une variable est définie avec un enum, tu peux utiliser la notation courte :

day = .tuesday  // au lieu de Weekday.tuesday

# Pratique avancée avec Claude

Pour consolider ces apprentissages, j’ai demandé à Claude de me générer des exercices personnalisés - certains pour réviser la théorie, d’autres plus avancés pour explorer plus loin.

J’ai pu pratiquer avec des concepts qui ne sont pas encore au programme :

  • Les for loops
  • Les fonctions
  • L’optimisation des enums avec descriptions
  • Case Iterable dans les enums

C’est passionnant de voir comment ces concepts s’articulent ensemble !


À demain pour de nouveaux apprentissages, et courage pour supporter cette chaleur ! 🌡️