Contenido del curso
Arquitectura
Gestión de Datos en SwiftData
- 8

Uso de SWIFTDA para Persistencia de Datos en iOS 17
04:31 min - 9

Cómo grabar datos con SwiftData
10:55 min - 10

Implementación de Queries con Predicados en Swift Data
11:08 min - 11

Corrección automática y actualización de registros en SWIFTDA
06:59 min - 12

Eliminar registros y calcular totales en SwiftData
04:20 min
Gestión de Datos en Realm
¿Swift Data o Realm?
Cómo usar UserDefaults en iOS
Resumen
Guardar datos locales en una app de iOS empieza por dominar UserDefaults en Swift, la herramienta ideal para persistir valores simples como un nickname, una fecha o un booleano sin recurrir a una base de datos. Si estás aprendiendo desarrollo iOS y quieres entender cuándo y cómo aplicarlo, este recorrido te muestra el flujo completo con un ejemplo real.
Qué es UserDefaults y para qué sirve en iOS
UserDefaults es el sistema de Apple para guardar pequeñas piezas de información de forma local y persistente entre sesiones de la app. Piensa en él como una libreta de notas rápidas: útil para apuntes cortos, no para archivar libros enteros.
¿Qué tipo de datos puedo guardar en UserDefaults? Solo datos sencillos: strings, booleans, números y fechas. Para estructuras grandes necesitas una base de datos como Swift Data o Realm.
Cómo se estructura el proyecto base del ejemplo
La app de demostración tiene una vista única donde puedes escribir un apodo, guardarlo y eliminarlo. La arquitectura separa responsabilidades de forma limpia [00:42].
- MainView: la vista que renderiza el input y los botones.
- MainViewModel: contiene las funciones declaradas con sus todos pendientes por resolver.
- Repositorio base: disponible en el sistema de recursos para que clones y practiques.
Antes de tocar lógica, lo primero es crear la instancia que nos dará acceso a todo lo guardado localmente.
Cómo creo la instancia de UserDefaults
Dentro del ViewModel declaras una constante que vivirá durante todo el ciclo de la clase [01:18]:
swift let defaults = UserDefaults.standard
Con eso ya tienes el puente para leer y escribir valores en cualquier función del ViewModel.
Cómo guardar un nickname con UserDefaults
La función para guardar usa el método set, que recibe el valor y la llave bajo la cual lo almacenas [01:35]. El valor sale del input que el usuario escribe, ligado a la variable nickname.
En vez de pasar el string "nickname" directamente cada vez, conviene declarar una constante con la llave. Esto evita typos cuando reutilizas la misma llave en varias funciones [02:05]:
swift let nicknameKey = "nickname"
func saveNickname() { defaults.set(nickname, forKey: nicknameKey) }
Usar una constante para la llave es una buena práctica que tu yo del futuro va a agradecer cuando la app crezca.
¿Por qué usar una constante para la llave en UserDefaults? Porque evitas errores de tipeo y centralizas el cambio en un solo lugar si decides renombrarla más adelante.
Cómo elimino y leo valores guardados
Eliminar un valor es tan directo como llamar a removeObject con la misma llave. Leerlo requiere validar primero si existe.
Cómo elimino un objeto en UserDefaults
La función de borrado localiza el valor por su llave y lo retira del almacenamiento local [02:35]:
swift func deleteNickname() { defaults.removeObject(forKey: nicknameKey) getNickname() }
Fíjate en que después de eliminar volvemos a llamar a getNickname. Esto refresca el estado de la vista para reflejar el cambio de inmediato.
Cómo obtengo el nickname guardado
La lectura usa defaults.string(forKey:) envuelto en un if let para manejar el caso en que no haya nada guardado [03:05]:
swift func getNickname() { if let storedNickname = defaults.string(forKey: nicknameKey) { canDelete = true nickname = storedNickname } else { canDelete = false nickname = "" } }
Cuando hay un valor, habilitas el botón de eliminar y rellenas el input. Cuando no, dejas la vista vacía y el botón deshabilitado, que es el estado típico de la primera vez que abres la app.
Cómo se comporta la app al probarla en el simulador
Al correr el proyecto en Xcode, el flujo confirma que la persistencia funciona [04:15]:
- Escribes un apodo y al guardar se habilita el botón de eliminar.
- Cierras la app, la vuelves a abrir y el apodo sigue ahí.
- Editas el valor, guardas, reinicias y aparece la versión actualizada.
Ese pequeño ciclo demuestra el corazón de UserDefaults: los datos sobreviven al cierre de la aplicación sin que tengas que escribir lógica adicional de archivos o redes.
¿UserDefaults sirve para guardar listas de productos o usuarios? No. Está pensado para datos simples y livianos. Para colecciones o relaciones complejas usa Swift Data o Realm.
En la siguiente clase vas a ver la arquitectura del proyecto base y cómo implementarla con bases de datos reales. ¿Ya tienes claro qué dato sencillo de tu app guardarías con UserDefaults? Cuéntalo en los comentarios.