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
- En Xcode, seleccione File → Add Packages.
- Pegue la URL del repositorio:
https://github.com/jpsim/Yams.git - 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: trueSerializació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 También en la biblioteca
Configuración de aplicaciones JavaScript (Node.js): bibliotecas dotenv, convict, nconf
Swinject para Swift: guía completa con ejemplos
Registro en Rust: revisión de las mejores bibliotecas y soluciones para tu proyecto
Chalk para JavaScript (Node.js): guía completa con ejemplos
Laravel Framework para PHP: guía completa con ejemplos