SwiftyUserDefaults para Swift: guía completa con ejemplos

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

¿Qué es SwiftyUserDefaults y para qué sirve?

\n\n

SwiftyUserDefaults 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.

\n\n

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
\n\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\n

Instalación

\n\n

SwiftyUserDefaults se distribuye a través de Swift Package Manager (SPM), CocoaPods y Carthage. Veamos los dos métodos más populares.

\n\n

Swift Package Manager (recomendado)

\n
    \n
  1. En Xcode, abre el menú: File → Add Packages...
  2. \n
  3. Pega la URL del repositorio: https://github.com/sunshinejr/SwiftyUserDefaults.git
  4. \n
  5. Selecciona la versión (se recomienda la última estable) y haz clic en Add Package.
  6. \n
  7. Asegúrate de que el paquete se haya agregado a tu target.
  8. \n
\n\n

CocoaPods

\n

Añade a tu Podfile:

\n
target 'YourAppTarget' do\n  use_frameworks!\n  pod 'SwiftyUserDefaults', '~> 5.3'\nend
\n

Luego ejecuta pod install.

\n\n

Después de la instalación, importa la biblioteca en el archivo correspondiente:

\n
import SwiftyUserDefaults
\n\n

Inicio rápido

\n\n

Pasemos directamente al código. Así es como se ve un escenario típico de trabajo con UserDefaults sin SwiftyUserDefaults y con él.

\n\n

Sin 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\n

Con 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\n

Como 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\n

Métodos y funciones principales

\n\n

Veamos 10 funcionalidades clave de la biblioteca con ejemplos.

\n\n

1. Defaults[\\.key] — obtener

Recommendations