Trabajo con YAML en Swift (iOS/macOS) — bibliotecas Yams y YamlSwift

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)



YAML (YAML Ain't Markup Language) es un formato conveniente de serialización de datos, ampliamente utilizado para archivos de configuración, descripción de API e intercambio de datos. En el ecosistema Swift para iOS y macOS hay varias bibliotecas confiables disponibles que permiten analizar y generar YAML. En este artículo, veremos las dos más populares: Yams y YamlSwift. Aprenderá cómo instalarlas en su proyecto, realizar análisis básico, serialización y manejar posibles errores.



1. Resumen de las bibliotecas



Yams

Yams es una biblioteca moderna para trabajar con YAML, escrita completamente en Swift. Soporta la especificación YAML 1.2, incluye un lexer, parser y herramientas para serialización. Yams es mantenida activamente por la comunidad y es ideal para proyectos que usan Swift Package Manager o CocoaPods.



YamlSwift

YamlSwift es una biblioteca más ligera, también escrita completamente en Swift. Proporciona una API minimalista para analizar cadenas y archivos YAML. YamlSwift es perfecta para escenarios simples donde no se requiere soporte completo de todas las funcionalidades de YAML.



2. Instalación



Ambas bibliotecas se pueden instalar mediante Swift Package Manager (SPM) o CocoaPods. Veamos ambas opciones.



Instalación mediante Swift Package Manager (recomendado)

En Xcode, abra File → Add Packages e inserte la URL del repositorio:

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

Seleccione la versión deseada (se recomienda la última estable) y agregue el paquete a su target.



Instalación mediante CocoaPods

Agregue la línea a su Podfile:

# Para Yamspod 'Yams'

# Para YamlSwiftpod 'YamlSwift'

Luego ejecute pod install.



3. Análisis de YAML con Yams



Después de la instalación, importe la biblioteca en el archivo Swift:

import Yams


Análisis básico de una cadena

Supongamos que tenemos una cadena YAML con información de un usuario:

let yamlString = """name: Iván Petrovage: 30languages:  - Swift  - Python  - JavaScript"""

El análisis se realiza con la función Yams.load(yaml:):

do {    if let result = try Yams.load(yaml: yamlString) as? [String: Any] {        print("Nombre: \\(result["name"] ?? "")")        print("Edad: \\(result["age"] ?? 0)")        if let languages = result["languages"] as? [String] {            print("Idiomas: \\(languages.joined(separator: ", "))")        }    }} catch {    print("Error al analizar YAML: \\(error.localizedDescription)")}


Análisis desde un archivo

Para cargar YAML desde un archivo en el Bundle, use:

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

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


4. Serialización (creación de YAML) con Yams



Yams también permite convertir objetos Swift de vuelta a una cadena YAML. Use la función Yams.dump(object:):

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

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

El resultado se verá así:

age: 25name: Ana Smirnovaskills:-                    

Recommendations