Codable Swift: Das komplette Tutorial mit Beispielen

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Codable für Swift: Das komplette Tutorial mit Beispielen

1. Was ist Codable und warum braucht man es?

Codable ist ein eingebautes Protokoll (ein Typealias aus Encodable & Decodable) in Swift, das mit Swift 4 eingeführt wurde. Es bietet eine deklarative Möglichkeit, benutzerdefinierte Datentypen in Formate wie JSON, Property List (plist) und andere zu serialisieren und zu deserialisieren. Anstatt mühsam manuellen Code zu schreiben, um Strukturen in Wörterbücher und zurück zu konvertieren, generiert Codable die Kodierungs-/Dekodierungslogik automatisch basierend auf den Eigenschaften deines Modells.

Warum ist das wichtig? In der modernen iOS/macOS-Entwicklung interagiert fast jede App mit einer Server-API, die Daten im JSON-Format sendet und empfängt. Ohne Codable müsstest du manuell Schleifen schreiben, Typen prüfen, optionale Werte behandeln und einen eigenen Parser entwickeln. Codable löst dieses Problem, macht den Code sauberer, sicherer und reduziert die Entwicklungszeit erheblich. Es ist der De-facto-Standard für die Arbeit mit JSON im Apple-Ökosystem.

Codable basiert auf den Protokollen Encodable (zur Umwandlung von Swift-Typen in Daten) und Decodable (zur Umwandlung von Daten in Swift-Typen). Durch die Kombination beider erhältst du einen vollständigen Serialisierungszyklus. Das Protokoll ist eng mit JSONEncoder und JSONDecoder integriert, den wichtigsten Werkzeugen für die JSON-Arbeit.

2. Installation

Codable ist Teil der Swift-Standardbibliothek (Foundation). Es ist keine zusätzliche Installation erforderlich. Du musst weder pip, npm, CocoaPods noch den Swift Package Manager verwenden. Importiere einfach Foundation in deine Datei:

import Foundation

Wenn du Swift in einer Linux-Umgebung verwendest (z. B. über den Swift Package Manager), ist Codable ebenfalls sofort verfügbar. Auch serverseitige Frameworks wie Vapor nutzen Codable standardmäßig.

3. Schnellstart – Ein minimales Arbeitsbeispiel

Erstellen wir eine einfache Benutzerstruktur und serialisieren/deserialisieren sie in JSON.

import Foundation

// 1. Definiere ein Modell, das dem Codable-Protokoll entspricht
struct User: Codable {
    let id: Int
    let name: String
    let email: String
}

// 2. Erstelle eine Instanz
let user = User(id: 1, name: "Alice", email: "alice@example.com")

// 3. Kodiere in JSON
let encoder = JSONEncoder()
encoder.outputFormatting = .prettyPrinted // Für eine schöne Ausgabe

do {
    let jsonData = try encoder.encode(user)
    if let jsonString = String(data: jsonData, encoding: .utf8) {
        print("JSON: \n\(jsonString)")
    }

    // 4. Dekodiere zurück
    let decoder = JSONDecoder()
    let decodedUser = try decoder.decode(User.self, from: jsonData)
    print("Decodierter Benutzer: \(decodedUser.name), E-Mail: \(decodedUser.email)")
} catch {
    print("Fehler: \(error)")
}

Konsolenausgabe:

JSON:
{
  "id" : 1,
  "name" : "Alice",
  "email" : "alice@example.com"
}
Decodierter Benutzer: Alice, E-Mail: alice@example.com

Wie du siehst, reichen nur wenige Zeilen Code – und die Serialisierung ist fertig.

4. Wichtige Methoden/Funktionen/Klassen

Schauen wir uns die Schlüsselkomponenten von Codable an, die du ständig verwenden wirst.

Empfehlungen