Codable-Konformität
Machen Sie Typen automatisch encodier- und decodierbar.
Codable-Konformität ist eine kostenlose Swift Academy-Lektion auf CoddyKit. Dies ist Lektion 1 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Swift Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Swift Academy-Kurs umfasst insgesamt 4 Lektionen.
Was ist Codable?
Codable ist ein Typalias für Encodable & Decodable. Wenn ein Typ dazu konform ist, kann Swift Instanzen in externe Daten (z. B. JSON) umwandeln und daraus wiederherstellen – ohne manuellen Parsing-Code.
import Foundation
struct Book: Codable {
var title: String
var pages: Int
}
print("Book conforms to Codable")Automatische Synthese
Wenn jede gespeicherte Eigenschaft selbst Codable ist, synthetisiert der Compiler die Kodierungs- und Dekodierungslogik für Sie. Sie schreiben nur die Liste der Eigenschaften – Swift erledigt den Rest.
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)In JSON-Daten kodieren
Sie können einen Codable-Wert an einen JSONEncoder übergeben, der ein Data-Objekt erzeugt. Wandeln Sie dieses Data in einen String um, um den JSON-Text zu untersuchen.
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)!)Aus JSON-Daten dekodieren
Der umgekehrte Weg führt über den JSONDecoder. Übergeben Sie ihm den Zieltyp und die rohen Data-Bytes, und er erstellt daraus einen vollständig typisierten Swift-Wert.
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)Round-Trip eines Werts
Auf das Kodieren sollte das Dekodieren folgen und denselben Wert zurückgeben. Dieser Round-Trip ist eine schnelle Möglichkeit, zu überprüfen, ob die Codable-Konformität eines Typs wie erwartet funktioniert.
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)Nur Encodable
Sie können auch nur einem der beiden Protokolle entsprechen. Encodable bedeutet, dass ein Typ geschrieben, aber nicht wieder eingelesen werden kann – praktisch für Antwortmodelle, die Sie nie parsen müssen.
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)!)Nur Decodable
Ebenso ermöglicht Decodable, einen Typ aus externen Daten zu erstellen, ohne ihn kodierbar zu machen. Das ist nützlich für schreibgeschützte API-Nutzdaten, die Sie nur verarbeiten.
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)Unterstützte Eigenschaftstypen
Typen der Standardbibliothek wie String, Int, Double, Bool, Date, Data und URL sowie Arrays und Wörterbücher mit Codable-Elementen sind von Haus aus Codable.
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)!)Auch Enums können konform sein
Ein Enum mit Rohwerten (wie String oder Int) wird automatisch zu Codable. Beim Kodieren wird es in JSON als sein Rohwert dargestellt.
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)!)Eine Eigenschaft muss Codable sein
Die Synthese funktioniert nur, wenn alle gespeicherten Eigenschaften Codable sind. Wenn Sie einen benutzerdefinierten Typ als Eigenschaft verwenden, muss auch dieser Typ konform sein – andernfalls verweigert der Compiler die Synthese.
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")Warum Codable wichtig ist
Codable erspart Ihnen manuell geschriebenen Serialisierungscode, macht den Typ zur einzigen Quelle der Wahrheit und erkennt Abweichungen bereits zur Compile-Zeit. Es ist der Standardweg, Daten in Swift-Apps hinein- und aus ihnen herauszubekommen.
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)Schnelltest: Codable-Konformität
Testen Sie, was Sie über Konformität gelernt haben.
Rückblick: Codable-Konformität
Sie haben die Grundlagen der Serialisierung in Swift gelernt:
Codable=Encodable & Decodable.- Die Konformität wird synthetisiert, wenn alle Eigenschaften
Codablesind. JSONEncodererzeugtData;JSONDecodererstellt den Wert wieder.- Standardtypen, Enums mit Rohwerten und verschachtelte
Codable-Typen werden alle unterstützt.
Häufig gestellte Fragen
Ist die Lektion „Codable-Konformität“ kostenlos?
Ja — der vollständige Text von „Codable-Konformität“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Swift Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Swift Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Codable-Konformität“?
Machen Sie Typen automatisch encodier- und decodierbar. Du übst Swift Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Swift Academy zu starten?
Keine Vorkenntnisse erforderlich. Swift Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 1 von 4.
Wie lange dauert die Lektion „Codable-Konformität“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Swift Academy-Lektion Code schreiben und ausführen?
Ja. Jede Swift Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Codable-Konformität
- Encodieren mit JSONEncoder
- Decodieren mit JSONDecoder
- Optionale und verschachtelte Typen verarbeiten