Biblioteca SwiftConfig para la gestión de configuración de aplicaciones iOS/macOS
SwiftConfig es una biblioteca ligera en lenguaje Swift, diseñada para la gestión cómoda de configuraciones en aplicaciones iOS y macOS. Permite separar la configuración (claves de API, endpoints URL, flags de funcionalidades) del código, almacenándola en archivos estructurados (JSON, YAML, plist) o variables de entorno.
¿Para qué sirve SwiftConfig?
En las aplicaciones modernas, a menudo es necesario cambiar el comportamiento sin recompilar: cambiar entre servidores de staging/production, realizar pruebas A/B, modificar tiempos de espera. El almacenamiento manual de configuraciones en UserDefaults o el código duro provoca errores y complica el mantenimiento. SwiftConfig resuelve estos problemas proporcionando:
- Acceso type-safe a los valores mediante enum y Codable
- Soporte para múltiples fuentes (archivos, env, UserDefaults)
- Actualización automática al modificar archivos (por ejemplo, para SwiftUI previews)
- Validación del esquema de configuración al iniciar
Instalación
Añada la biblioteca a través de Swift Package Manager en Xcode:
File → Add Packages → introduzca la URL del repositorio de SwiftConfigO añádala en Package.swift:
.package(url: "https://github.com/example/SwiftConfig.git", from: "1.0.0")Funciones principales
- Multiformato: detección automática del formato del archivo (json, yaml, plist)
- Environment overlay: los valores de las variables de entorno tienen prioridad sobre los archivos
- Almacenamiento en caché: el análisis se realiza una vez, luego los datos se almacenan en memoria
- Basado en protocolos: usted define un protocolo con requisitos, la biblioteca genera la implementación
Ejemplo de código en Swift (iOS/macOS)
import SwiftConfig
// Definimos la estructura de configuraciónstruct AppConfig: Codable { let apiURL: String let timeout: Double let isFeatureXEnabled: Bool}
// Cargamos la configuración desde el archivo config.jsonlet configManager = try ConfigManager<AppConfig>(source: .file("config"))
// Usamos en el códigolet url = URL(string: configManager.current.apiURL)!let session = URLSession(configuration: .default)session.configuration.timeoutIntervalForRequest = configManager.current.timeout
// Para SwiftUI se puede usar @Publishedclass SettingsViewModel: ObservableObject { @Published var config: AppConfig init() { self.config = try! ConfigManager<AppConfig>(source: .file("config")).current }}¿Cuándo usar SwiftConfig?
- En proyectos multi-environment (dev/staging/prod)
- Cuando sea necesario cambiar el comportamiento de la aplicación sin redeploy
- Para trabajar con feature toggles
- En bibliotecas y frameworks donde se requiera configuración a través de archivos de configuración
La biblioteca es especialmente útil para pipelines de CI/CD, donde las variables de entorno se sustituyen dinámicamente en la etapa de compilación. SwiftConfig es compatible con iOS 15+, macOS 12+ y es totalmente compatible con SwiftUI y Combine.
También en la biblioteca
Aprendizaje automático en JavaScript: bibliotecas para Node.js — revisión y ejemplos
ring para Rust: guía completa con ejemplos prácticos
Programación Reactiva en JavaScript (Node.js): RxJS y Observables