Arbeit mit YAML in Swift (iOS/macOS) — Bibliotheken Yams und YamlSwift

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

Arbeit mit YAML in Swift (iOS/macOS)



YAML (YAML Ain't Markup Language) ist ein praktisches Daten-Serialisierungsformat, das häufig für Konfigurationsdateien, API-Beschreibungen und Datenaustausch verwendet wird. Im Swift-Ökosystem für iOS und macOS stehen mehrere zuverlässige Bibliotheken zur Verfügung, die das Parsen und Generieren von YAML ermöglichen. In diesem Artikel betrachten wir die beiden beliebtesten: Yams und YamlSwift. Sie erfahren, wie Sie diese in Ihr Projekt einbinden, grundlegendes Parsing und Serialisierung durchführen und mögliche Fehler behandeln.



1. Überblick über die Bibliotheken



Yams

Yams ist eine moderne Bibliothek für die Arbeit mit YAML, die vollständig in Swift geschrieben ist. Sie unterstützt die YAML 1.2-Spezifikation und enthält einen Lexer, Parser sowie Werkzeuge zur Serialisierung. Yams wird aktiv von der Community unterstützt und eignet sich hervorragend für Projekte, die Swift Package Manager oder CocoaPods verwenden.



YamlSwift

YamlSwift ist eine leichtere Bibliothek, die ebenfalls vollständig in Swift geschrieben ist. Sie bietet eine minimalistische API zum Parsen von YAML-Strings und -Dateien. YamlSwift ist ideal für einfache Szenarien, in denen keine vollständige Unterstützung aller YAML-Funktionen erforderlich ist.



2. Installation



Beide Bibliotheken können über Swift Package Manager (SPM) oder CocoaPods installiert werden. Betrachten wir beide Optionen.



Installation über Swift Package Manager (empfohlen)

Öffnen Sie in Xcode File → Add Packages und fügen Sie die Repository-URL ein:

  • Yams: https://github.com/jpsim/Yams.git
  • YamlSwift: https://github.com/behrang/YamlSwift.git

Wählen Sie die gewünschte Version (empfohlen wird die neueste stabile Version) und fügen Sie das Paket zu Ihrem Target hinzu.



Installation über CocoaPods

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

# Für Yamspod 'Yams'

# Für YamlSwiftpod 'YamlSwift'

Führen Sie anschließend pod install aus.



3. YAML-Parsing mit Yams



Importieren Sie nach der Installation die Bibliothek in Ihre Swift-Datei:

import Yams


Basis-Parsing eines Strings

Angenommen, wir haben einen YAML-String mit Benutzerinformationen:

let yamlString = """name: Iwan Petrowalter: 30sprachen:  - Swift  - Python  - JavaScript"""

Das Parsing erfolgt mit der Funktion Yams.load(yaml:):

do {    if let result = try Yams.load(yaml: yamlString) as? [String: Any] {        print("Name: \\(result["name"] ?? "")")        print("Alter: \\(result["alter"] ?? 0)")        if let sprachen = result["sprachen"] as? [String] {            print("Sprachen: \\(sprachen.joined(separator: ", "))")        }    }} catch {    print("YAML-Parsing-Fehler: \\(error.localizedDescription)")}


Parsing aus einer Datei

Zum Laden von YAML aus einer Datei im Bundle verwenden Sie:

guard let filePath = Bundle.main.path(forResource: "config", ofType: "yaml"),      let yamlString = try? String(contentsOfFile: filePath, encoding: .utf8) else {    fatalError("Datei config.yaml nicht gefunden")}

do { let config = try Yams.load(yaml: yamlString) as? [String: Any] // Arbeit mit config} catch { print("Fehler: \\(error)")}


4. Serialisierung (YAML-Erstellung) mit Yams



Yams ermöglicht auch die Konvertierung von Swift-Objekten zurück in einen YAML-String. Verwenden Sie die Funktion Yams.dump(object:):

let dictionary: [String: Any] = [    "name": "Anna Smirnowa",    "alter": 25,    "fähigkeiten": ["iOS", "macOS", "watchOS"]]

do { let yamlString = try Yams.dump(object: dictionary) print(yamlString)} catch { print("Serialisierungsfehler: \\(error)")}

Das Ergebnis sieht wie folgt aus:

alter: 25name: Anna Smirnowafähigkeiten:-                    

Empfehlungen