Arbeiten mit YAML in Swift: Die Yams-Bibliothek für iOS/macOS

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

Arbeiten mit YAML in Swift (iOS/macOS): Die Yams-Bibliothek

\n\n

YAML (YAML Ain't Markup Language) ist ein praktisches Daten-Serialisierungsformat, das häufig für Konfigurationsdateien, Abhängigkeitsbeschreibungen (z. B. docker-compose.yml) sowie in Projekten verwendet wird, die eine lesbare und prägnante Datenstruktur erfordern. Im Apple-Ökosystem gibt es mehrere Bibliotheken für die Arbeit mit YAML in Swift, aber die beliebteste und stabilste ist Yams – eine schnelle und einfach zu verwendende Bibliothek, die in reinem Swift geschrieben ist.

\n\n

Was ist Yams?

\n\n

Yams ist eine Open-Source-Bibliothek, die vollständige Unterstützung für das Parsen und Serialisieren von YAML in Swift bietet. Sie ist kompatibel mit iOS, macOS, tvOS und watchOS. Yams unterstützt die YAML 1.2-Spezifikation und ermöglicht die Konvertierung von YAML-Strings in Swift-Strukturen (Wörterbücher, Arrays, Strings, Zahlen, boolesche Werte) und zurück.

\n\n

Hauptfunktionen von Yams:

\n
    \n
  • Parsen eines YAML-Strings in Any (normalerweise [String: Any] oder [Any]).
  • \n
  • Serialisierung von Swift-Objekten zurück in YAML.
  • \n
  • Unterstützung für verschachtelte Strukturen, Arrays und mehrere Dokumente.
  • \n
  • Fehlerbehandlung mit detaillierten Meldungen.
  • \n
  • Vollständig kompatibel mit Swift Package Manager (SPM) und CocoaPods.
  • \n
\n\n

Installation von Yams in ein Projekt

\n\n

Sie können Yams über den Swift Package Manager (empfohlen) oder CocoaPods installieren.

\n\n

Über den Swift Package Manager

\n\n
    \n
  1. Wählen Sie in Xcode File → Add Packages.
  2. \n
  3. Fügen Sie die Repository-URL ein: https://github.com/jpsim/Yams.git
  4. \n
  5. Wählen Sie die Version (empfohlen wird die neueste stabile Version) und klicken Sie auf Add Package.
  6. \n
\n\n

Oder fügen Sie die Abhängigkeit in Package.swift hinzu:

\n\n
// swift-tools-version:5.7\nimport PackageDescription\n\nlet package = Package(\n    name: "MyProject",\n    dependencies: [\n        .package(url: "https://github.com/jpsim/Yams.git", from: "5.0.0")\n    ],\n    targets: [\n        .target(\n            name: "MyProject",\n            dependencies: ["Yams"])\n    ]\n)
\n\n

Über CocoaPods

\n\n

Fügen Sie die folgende Zeile in Ihre Podfile ein:

\n\n
pod 'Yams', '~> 5.0'
\n\n

Führen Sie dann pod install aus.

\n\n

Grundlegende Verwendung: YAML parsen

\n\n

Importieren Sie nach der Installation die Bibliothek und verwenden Sie Yams.load(yaml:), um einen String zu parsen.

\n\n
import Yams\n\nlet yamlString = """\nname: Swift\ntype: language\nversions:\n  - 5.5\n  - 5.6\n  - 5.7\nfeatures:\n  protocol_oriented: true\n  value_semantics: true\n"""\n\ndo {\n    if let data = try Yams.load(yaml: yamlString) as? [String: Any] {\n        print("Name: \\(data["name"] ?? "")")\n        print("Versions: \\(data["versions"] ?? [])")\n        if let features = data["features"] as? [String: Bool] {\n            print("Protocol oriented: \\(features["protocol_oriented"] ?? false)")\n        }\n    }\n} catch {\n    print("Fehler beim Parsen von YAML: \\(error.localizedDescription)")\n}
\n\n

Ausgabe:

\n
Name: Swift\nVersions: [5.5, 5.6, 5.7]\nProtocol oriented: true
\n\n

Serialisierung von Swift-Objekten in YAML

\n\n

Für die Rückkonvertierung verwenden Sie Yams.dump(object:):

\n\n
import Yams\n\nlet dictionary: [String: Any] = [\n    "app": "MyApp",\n    "version": 2.0,\n    "features": ["dark_mode", "notifications"],\n    "settings": [\n        "autosave": true,\n        "timeout": 30\n    ]\n]\n\ndo {\n    let yamlString = try Yams.dump(object: dictionary)\n    print(yamlString)\n} catch {\n    print("Fehler bei der Serialisierung: \\(error.localizedDescription)")\n}
\n\n

Ausgabe:

\n
app: MyApp\nfeatures:\n  - dark_mode\n  - notifications\nsettings:\n  autosave: true\n  timeout: 30\n                    

Empfehlungen