Arbeiten mit YAML in Swift (iOS/macOS): Die Yams-Bibliothek
\n\nYAML (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.
Was ist Yams?
\n\nYams 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\nHauptfunktionen 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
Installation von Yams in ein Projekt
\n\nSie können Yams über den Swift Package Manager (empfohlen) oder CocoaPods installieren.
\n\nÜber den Swift Package Manager
\n\n- \n
- Wählen Sie in Xcode File → Add Packages. \n
- Fügen Sie die Repository-URL ein:
https://github.com/jpsim/Yams.git\n - Wählen Sie die Version (empfohlen wird die neueste stabile Version) und klicken Sie auf Add Package. \n
Oder fügen Sie die Abhängigkeit in Package.swift hinzu:
// 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\nFügen Sie die folgende Zeile in Ihre Podfile ein:
pod 'Yams', '~> 5.0'\n\nFühren Sie dann pod install aus.
Grundlegende Verwendung: YAML parsen
\n\nImportieren Sie nach der Installation die Bibliothek und verwenden Sie Yams.load(yaml:), um einen String zu parsen.
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\nAusgabe:
\nName: Swift\nVersions: [5.5, 5.6, 5.7]\nProtocol oriented: true\n\nSerialisierung von Swift-Objekten in YAML
\n\nFür die Rückkonvertierung verwenden Sie Yams.dump(object:):
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\nAusgabe:
\napp: MyApp\nfeatures:\n - dark_mode\n - notifications\nsettings:\n autosave: true\n timeout: 30\n