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. JSONEncoderproduit desData;JSONDecoderreconstruit la valeur.- Les types standard, les énumérations à valeur brute et les types
Codableimbriqué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
- Se conformer à Codable
- Encodage avec JSONEncoder
- Décodage avec JSONDecoder
- Gestion des types optionnels et imbriqués