0Pricing
Swift Academy · Leçon

Se conformer à Codable

Rendez automatiquement les types encodables et décodables.

Se conformer à Codable est une leçon Swift Academy gratuite sur CoddyKit. Ceci est la leçon 1 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Swift Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Swift Academy comprend 4 leçons au total.

Qu'est-ce que Codable ?

Codable est un alias de type pour Encodable & Decodable. Lorsqu'un type s'y conforme, Swift peut transformer ses instances en données externes, par exemple au format JSON, puis les reconstruire, sans nécessiter de code d'analyse manuel.

import Foundation

struct Book: Codable {
    var title: String
    var pages: Int
}

print("Book conforms to Codable")

Synthèse automatique

Si chaque propriété stockée est elle-même Codable, le compilateur génère automatiquement la logique d’encodage et de décodage. Vous n’avez qu’à écrire la liste des propriétés : Swift complète le reste.

import Foundation

struct User: Codable {
    var name: String
    var age: Int
    var isActive: Bool
}

let u = User(name: "Ada", age: 36, isActive: true)
print(u)

Encodage en données JSON

Une valeur Codable peut être transmise à un JSONEncoder, qui produit un bloc de Data. Convertissez ces Data en String pour examiner le texte JSON.

import Foundation

struct User: Codable {
    var name: String
    var age: Int
}

let u = User(name: "Ada", age: 36)
let data = try JSONEncoder().encode(u)
print(String(data: data, encoding: .utf8)!)

Décodage depuis des données JSON

Le trajet inverse utilise JSONDecoder. Donnez-lui le type cible et les Data brutes : il reconstruit une valeur Swift entièrement typée.

import Foundation

struct User: Codable {
    var name: String
    var age: Int
}

let json = "{\"name\":\"Ada\",\"age\":36}"
let data = json.data(using: .utf8)!
let u = try JSONDecoder().decode(User.self, from: data)
print(u.name, u.age)

Effectuer un aller-retour avec une valeur

Après un encodage puis un décodage, vous devez retrouver une valeur égale. Cet aller-retour est un moyen rapide de vérifier que la conformité Codable d’un type se comporte comme prévu.

import Foundation

struct Point: Codable {
    var x: Int
    var y: Int
}

let p = Point(x: 3, y: 7)
let data = try JSONEncoder().encode(p)
let back = try JSONDecoder().decode(Point.self, from: data)
print(back.x, back.y)

Encodable uniquement

Vous pouvez vous conformer à une seule des deux parties. Encodable signifie qu’un type peut être écrit, mais pas relu : c’est pratique pour les modèles de réponse que vous n’avez jamais besoin d’analyser.

import Foundation

struct Receipt: Encodable {
    var item: String
    var total: Double
}

let r = Receipt(item: "Coffee", total: 4.5)
let data = try JSONEncoder().encode(r)
print(String(data: data, encoding: .utf8)!)

Decodable uniquement

De même, Decodable permet de construire un type à partir de données externes sans pouvoir l’encoder. C’est utile pour les données de réponse en lecture seule que vous faites uniquement consommer.

import Foundation

struct Config: Decodable {
    var version: Int
    var debug: Bool
}

let json = "{\"version\":2,\"debug\":true}"
let data = json.data(using: .utf8)!
let c = try JSONDecoder().decode(Config.self, from: data)
print(c.version, c.debug)

Types de propriétés pris en charge

Les types de la bibliothèque standard comme String, Int, Double, Bool, Date, Data et URL, ainsi que les tableaux et dictionnaires d’éléments Codable, sont tous compatibles avec Codable immédiatement.

import Foundation

struct Profile: Codable {
    var name: String
    var tags: [String]
    var scores: [String: Int]
}

let p = Profile(name: "Sam", tags: ["a", "b"], scores: ["math": 90])
let data = try JSONEncoder().encode(p)
print(String(data: data, encoding: .utf8)!)

Les énumérations peuvent aussi être conformes

Une énumération avec des valeurs brutes, comme String ou Int, devient automatiquement Codable. Elle est encodée sous la forme de sa valeur brute dans le JSON.

import Foundation

enum Status: String, Codable {
    case active, paused, done
}

struct Task: Codable {
    var title: String
    var status: Status
}

let t = Task(title: "Ship", status: .active)
let data = try JSONEncoder().encode(t)
print(String(data: data, encoding: .utf8)!)

Une propriété doit être Codable

La synthèse ne fonctionne que lorsque toutes les propriétés stockées sont Codable. Si un type personnalisé est utilisé comme propriété, ce type doit également être conforme ; sinon, le compilateur refuse de générer la synthèse.

import Foundation

struct Address: Codable {
    var city: String
}

struct Person: Codable {
    var name: String
    var address: Address
}

let p = Person(name: "Lee", address: Address(city: "Rome"))
print(try JSONEncoder().encode(p).count, "bytes")

Pourquoi Codable est important

Codable supprime le code répétitif de sérialisation écrit à la main, fait du type la source unique de vérité et détecte les incompatibilités au moment de la compilation. C’est la méthode standard pour faire entrer et sortir des données des applications Swift.

import Foundation

struct Settings: Codable {
    var theme: String
    var fontSize: Int
}

let s = Settings(theme: "dark", fontSize: 14)
let data = try JSONEncoder().encode(s)
let back = try JSONDecoder().decode(Settings.self, from: data)
print(back.theme, back.fontSize)

Vérification rapide : conformité à Codable

Vérifiez ce que vous avez appris sur la conformité.

Récapitulatif : conformité à Codable

Vous avez appris les bases de la sérialisation dans Swift :

  • Codable = Encodable & Decodable.
  • La conformité est générée automatiquement lorsque toutes les propriétés sont Codable.
  • JSONEncoder produit des Data ; JSONDecoder reconstruit la valeur.
  • Les types standard, les énumérations à valeur brute et les types Codable imbriqués sont tous pris en charge.

Questions Fréquemment Posées

La leçon « Se conformer à Codable » est-elle gratuite ?

Oui — le texte complet de « Se conformer à Codable » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Swift Academy, passe à CoddyKit PRO. Le cours Swift Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Se conformer à Codable » ?

Rendez automatiquement les types encodables et décodables. Tu pratiques Swift Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Swift Academy ?

Aucune expérience préalable n'est requise. Swift Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 4.

Combien de temps prend la leçon « Se conformer à Codable » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Swift Academy ?

Oui. Chaque leçon Swift Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Se conformer à Codable
  2. Encodage avec JSONEncoder
  3. Décodage avec JSONDecoder
  4. Gestion des types optionnels et imbriqués
← Retour à Swift Academy