¿Qué es SwiftyUserDefaults y para qué sirve?
\n\nSwiftyUserDefaults es una biblioteca envoltorio ligera pero potente para la clase estándar UserDefaults en Swift. Si alguna vez has trabajado directamente con UserDefaults, sabes que puede ser tedioso: necesitas escribir mucho código repetitivo para guardar y recuperar valores, especificar explícitamente el tipo de dato, usar claves de cadena (lo que puede provocar errores tipográficos) y manejar valores opcionales.
SwiftyUserDefaults resuelve todos estos problemas. Proporciona:
\n- \n
- Tipado estático: el compilador verifica los tipos, eliminando errores en tiempo de ejecución. \n
- Acceso global: acceso a los valores a través de la conveniente propiedad
Defaults. \n - Soporte para tipos personalizados: puedes guardar cualquier estructura o clase propia implementando el protocolo
DefaultsSerializable. \n - Azúcar sintáctico: trabajar con UserDefaults se vuelve similar a trabajar con propiedades normales. \n
- Seguridad: desaparece el riesgo de cometer errores tipográficos en la clave de cadena. \n
La biblioteca es ideal para almacenar pequeñas cantidades de datos: configuraciones de la aplicación, estado de la interfaz de usuario, tokens de autenticación, etc. No está diseñada para almacenar grandes volúmenes de datos; para eso existen Core Data, Realm o archivos.
\n\nInstalación
\n\nSwiftyUserDefaults se distribuye a través de Swift Package Manager (SPM), CocoaPods y Carthage. Veamos los dos métodos más populares.
\n\nSwift Package Manager (recomendado)
\n- \n
- En Xcode, abre el menú:
File → Add Packages...\n - Pega la URL del repositorio:
https://github.com/sunshinejr/SwiftyUserDefaults.git\n - Selecciona la versión (se recomienda la última estable) y haz clic en
Add Package. \n - Asegúrate de que el paquete se haya agregado a tu target. \n
CocoaPods
\nAñade a tu Podfile:
target 'YourAppTarget' do\n use_frameworks!\n pod 'SwiftyUserDefaults', '~> 5.3'\nend\nLuego ejecuta pod install.
Después de la instalación, importa la biblioteca en el archivo correspondiente:
\nimport SwiftyUserDefaults\n\nInicio rápido
\n\nPasemos directamente al código. Así es como se ve un escenario típico de trabajo con UserDefaults sin SwiftyUserDefaults y con él.
\n\nSin SwiftyUserDefaults (enfoque estándar)
\n// Guardar\nUserDefaults.standard.set("John", forKey: "user_name")\nUserDefaults.standard.set(25, forKey: "user_age")\nUserDefaults.standard.set(true, forKey: "is_logged_in")\n\n// Leer\nlet name = UserDefaults.standard.string(forKey: "user_name") ?? ""\nlet age = UserDefaults.standard.integer(forKey: "user_age")\nlet isLoggedIn = UserDefaults.standard.bool(forKey: "is_logged_in")\n\nCon SwiftyUserDefaults
\n// Definir las claves (puede ser en un archivo aparte)\nextension DefaultsKeys {\n var userName: DefaultsKey<String> { .init("user_name") }\n var userAge: DefaultsKey<Int> { .init("user_age") }\n var isLoggedIn: DefaultsKey<Bool> { .init("is_logged_in") }\n}\n\n// Guardar\nDefaults[\\.userName] = "John"\nDefaults[\\.userAge] = 25\nDefaults[\\.isLoggedIn] = true\n\n// Leer\nlet name: String = Defaults[\\.userName]\nlet age: Int = Defaults[\\.userAge]\nlet isLoggedIn: Bool = Defaults[\\.isLoggedIn]\n\nprint("\\(name) tiene \\(age) años. Conectado: \\(isLoggedIn)")\n\nComo puedes ver, el código es más limpio, los tipos se verifican en tiempo de compilación y las claves están definidas en un solo lugar.
\n\nMétodos y funciones principales
\n\nVeamos 10 funcionalidades clave de la biblioteca con ejemplos.
\n\n1. Defaults[\\.key] — obtener
También en la biblioteca
Autorización y autenticación en Swift (iOS/macOS): guía completa
Migraciones de bases de datos en Rust: revisión de herramientas Diesel, SeaORM y sqlx
Generación de informes PDF en Swift para iOS y macOS con PDFKit y Core Graphics
Autorización y autenticación en PHP: Guía completa con ejemplos