¿Qué es SwiftyConfig?
SwiftyConfig es una biblioteca ligera para gestionar configuraciones de aplicaciones iOS/macOS en Swift. Proporciona una interfaz conveniente para leer configuraciones desde archivos .plist, .json o .yaml, y también admite el trabajo con variables de entorno. La biblioteca verifica automáticamente los tipos de datos, admite estructuras anidadas y permite establecer valores predeterminados.
¿Para qué sirve SwiftyConfig?
Durante el desarrollo de aplicaciones, a menudo surge la necesidad de almacenar configuraciones de entorno (claves API, URL de servidores, flags de funcionalidades) por separado del código. SwiftyConfig resuelve este problema ofreciendo:
- Seguridad de tipos — el compilador verifica los tipos de configuración en tiempo de compilación.
- Flexibilidad — soporte para múltiples formatos de archivo y fuentes de datos.
- Simplicidad — mínimo código para inicialización y acceso a las configuraciones.
Instalación
Añade en Package.swift:
.package(url: "https://github.com/example/SwiftyConfig.git", from: "1.0.0")O mediante CocoaPods:
pod 'SwiftyConfig'Funciones principales
- Detección automática de configuraciones — busca archivos
Config.plisten el bundle. - Soporte para claves anidadas — acceso mediante notación de puntos:
config["server.host"]. - Getters tipificados —
string(forKey:),int(forKey:),bool(forKey:)y otros. - Valores predeterminados — si la clave no existe, se devuelve el valor especificado.
- Caché — lectura única del archivo con posterior almacenamiento en caché en memoria.
Ejemplo de código
import SwiftyConfig
// Inicialización (carga automáticamente Config.plist)let config = try SwiftyConfig()
// Lectura de valoreslet apiKey: String = config.string(forKey: "api.key") ?? ""let maxRetries: Int = config.int(forKey: "network.maxRetries") ?? 3let isDebugMode: Bool = config.bool(forKey: "debug.enabled") ?? false
// O con notación de puntosif let host = config["server.host"] as? String { print("Server host: \\(host)")}
// Para macOS se puede añadir soporte para variables de entorno:let envConfig = SwiftyConfig(environment: ProcessInfo.processInfo.environment)print(envConfig.string(forKey: "DATABASE_URL") ?? "default")¿Cuándo usar SwiftyConfig?
La biblioteca es ideal para:
- Aplicaciones multi-entorno — dev/staging/prod con diferentes configuraciones.
- Feature toggles — activar/desactivar funciones rápidamente sin recompilar.
- Compilaciones para múltiples targets — iOS, macOS, watchOS con configuraciones compartidas.
- Proyectos open-source — donde es necesario ocultar claves reales y moverlas a un archivo separado.
SwiftyConfig es una solución minimalista pero potente para configurar aplicaciones Swift, que simplifica el mantenimiento y la escalabilidad del código.