Travailler avec YAML en Swift (iOS/macOS) — bibliothèques Yams et YamlSwift

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Travailler avec YAML en Swift (iOS/macOS)



YAML (YAML Ain't Markup Language) est un format pratique de sérialisation de données, largement utilisé pour les fichiers de configuration, la description d'API et l'échange de données. Dans l'écosystème Swift pour iOS et macOS, plusieurs bibliothèques fiables sont disponibles pour analyser et générer du YAML. Dans cet article, nous examinerons les deux plus populaires : Yams et YamlSwift. Vous apprendrez à les installer dans votre projet, à effectuer un parsing de base, une sérialisation et à gérer les erreurs éventuelles.



1. Aperçu des bibliothèques



Yams

Yams est une bibliothèque moderne pour travailler avec YAML, entièrement écrite en Swift. Elle prend en charge la spécification YAML 1.2, inclut un lexer, un parser et des outils de sérialisation. Yams est activement maintenue par la communauté et convient parfaitement aux projets utilisant Swift Package Manager ou CocoaPods.



YamlSwift

YamlSwift est une bibliothèque plus légère, également entièrement écrite en Swift. Elle fournit une API minimaliste pour analyser des chaînes et fichiers YAML. YamlSwift est idéale pour les scénarios simples où le support complet de toutes les fonctionnalités YAML n'est pas nécessaire.



2. Installation



Les deux bibliothèques peuvent être installées via Swift Package Manager (SPM) ou CocoaPods. Examinons les deux options.



Installation via Swift Package Manager (recommandée)

Dans Xcode, ouvrez File → Add Packages et collez l'URL du dépôt :

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

Choisissez la version souhaitée (la dernière version stable est recommandée) et ajoutez le paquet à votre cible.



Installation via CocoaPods

Ajoutez la ligne à votre Podfile :

# Pour Yamspod 'Yams'

# Pour YamlSwiftpod 'YamlSwift'

Exécutez ensuite pod install.



3. Parsing YAML avec Yams



Après l'installation, importez la bibliothèque dans votre fichier Swift :

import Yams


Parsing de base d'une chaîne

Supposons que nous ayons une chaîne YAML avec des informations sur un utilisateur :

let yamlString = """name: Ivan Petrovage: 30languages:  - Swift  - Python  - JavaScript"""

Le parsing s'effectue avec la fonction Yams.load(yaml:) :

do {    if let result = try Yams.load(yaml: yamlString) as? [String: Any] {        print("Nom : \\(result["name"] ?? "")")        print("Âge : \\(result["age"] ?? 0)")        if let languages = result["languages"] as? [String] {            print("Langues : \\(languages.joined(separator: ", "))")        }    }} catch {    print("Erreur de parsing YAML : \\(error.localizedDescription)")}


Parsing depuis un fichier

Pour charger du YAML depuis un fichier dans le Bundle, utilisez :

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

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


4. Sérialisation (création de YAML) avec Yams



Yams permet également de reconvertir des objets Swift en chaîne YAML. Utilisez la fonction Yams.dump(object:) :

let dictionary: [String: Any] = [    "name": "Anna Smirnova",    "age": 25,    "skills": ["iOS", "macOS", "watchOS"]]

do { let yamlString = try Yams.dump(object: dictionary) print(yamlString)} catch { print("Erreur de sérialisation : \\(error)")}

Le résultat ressemblera à ceci :

age: 25name: Anna Smirnovaskills:-                    

Recommendations