Trabajo con YAML en Swift: biblioteca Yams para iOS/macOS

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Trabajo con YAML en Swift (iOS/macOS): biblioteca Yams



YAML (YAML Ain't Markup Language) es un formato conveniente de serialización de datos que se utiliza a menudo para archivos de configuración, descripción de dependencias (por ejemplo, docker-compose.yml), así como en proyectos donde se requiere una estructura de datos legible y concisa. En el ecosistema de Apple, para trabajar con YAML en Swift existen varias bibliotecas, pero la más popular y estable es Yams, una biblioteca rápida y fácil de usar escrita en Swift puro.



¿Qué es Yams?



Yams es una biblioteca de código abierto que proporciona soporte completo para el análisis y la serialización de YAML en Swift. Es compatible con iOS, macOS, tvOS y watchOS. Yams admite la especificación YAML 1.2 y permite convertir cadenas YAML en estructuras de Swift (diccionarios, arrays, cadenas, números, valores booleanos) y viceversa.



Funcionalidades principales de Yams:

  • Análisis de una cadena YAML en Any (generalmente [String: Any] o [Any]).
  • Serialización de objetos Swift de vuelta a YAML.
  • Soporte para estructuras anidadas, arrays y documentos múltiples.
  • Manejo de errores con mensajes detallados.
  • Totalmente compatible con Swift Package Manager (SPM) y CocoaPods.


Instalación de Yams en el proyecto



Puede instalar Yams a través de Swift Package Manager (recomendado) o CocoaPods.



A través de Swift Package Manager



  1. En Xcode, seleccione File → Add Packages.
  2. Pegue la URL del repositorio: https://github.com/jpsim/Yams.git
  3. Seleccione la versión (se recomienda la última estable) y haga clic en Add Package.


O agregue la dependencia en Package.swift:



// swift-tools-version:5.7import PackageDescription

let package = Package( name: "MyProject", dependencies: [ .package(url: "https://github.com/jpsim/Yams.git", from: "5.0.0") ], targets: [ .target( name: "MyProject", dependencies: ["Yams"]) ])


A través de CocoaPods



Agregue la línea a su Podfile:



pod 'Yams', '~> 5.0'


Luego ejecute pod install.



Uso básico: análisis de YAML



Después de la instalación, importe la biblioteca y use Yams.load(yaml:) para analizar una cadena.



import Yams

let yamlString = """name: Swifttype: languageversions: - 5.5 - 5.6 - 5.7features: protocol_oriented: true value_semantics: true"""

do { if let data = try Yams.load(yaml: yamlString) as? [String: Any] { print("Name: \\(data["name"] ?? "")") print("Versions: \\(data["versions"] ?? [])") if let features = data["features"] as? [String: Bool] { print("Protocol oriented: \\(features["protocol_oriented"] ?? false)") } }} catch { print("Error al analizar YAML: \\(error.localizedDescription)")}


Resultado de la ejecución:

Name: SwiftVersions: [5.5, 5.6, 5.7]Protocol oriented: true


Serialización de objetos Swift a YAML



Para la conversión inversa, use Yams.dump(object:):



import Yams

let dictionary: [String: Any] = [ "app": "MyApp", "version": 2.0, "features": ["dark_mode", "notifications"], "settings": [ "autosave": true, "timeout": 30 ]]

do { let yamlString = try Yams.dump(object: dictionary) print(yamlString)} catch { print("Error de serialización: \\(error.localizedDescription)")}


Salida:

app: MyAppfeatures:  - dark_mode  - notificationssettings:  autosave: true  timeout: 30                    

Recommendations