Contenido del curso
Estructura de un Proyecto con MVVM
Operaciones CRUD en un proyecto con MVVM
- 11

Función addTodo con Core Data en SwiftUI
19:47 min - 12

Funcionalidades básicas para gestionar tareas en SwiftUI
14:30 min - 13

Listado y detalle de notas en SwiftUI
22:35 min - 14

Editar todos con SwiftUI y Core Data
13:41 min - 15

Archivar tareas en SwiftUI con Core Data
15:28 min - 16

Cómo desarchivar tareas con unarchiveTodo
Viendo ahora - 17

Eliminar un to do definitivamente con Core Data
04:15 min - 18

Marcar tareas completadas en SwiftUI
20:50 min - 19

Creación de Vistas Amigables en SwiftUI para Aplicaciones de Tareas
19:52 min
Clean Architecture
- 20

Qué es Clean Architecture y por qué supera a MVVM
05:52 min - 21

Estructura y Ventajas de la Clean Architecture
03:47 min - 22

Estructura de proyecto iOS con Clean Architecture
06:01 min - 23

Mapeo de JSON a structs Swift con Codable
09:10 min - 24

Capa de datos con Clean Architecture en Swift
30:54 min - 25

Casos de uso en la capa de dominio Swift
09:35 min - 26

Capa de presentación con MVVM en SwiftUI
15:37 min - 27

Navegación y detalle con Clean Architecture en SwiftUI
21:54 min
MVVM y Clean Architecture
Cómo desarchivar tareas con unarchiveTodo
Resumen
Desarchivar un to-do en una app de tareas es tan simple como invertir el estado que lo envió al archivo. Si ya implementaste la lógica de archivado, esta funcionalidad reutiliza el mismo patrón en el view model y aprovecha los datos observables para refrescar la vista automáticamente. Te muestro cómo conectar el botón con la función unarchiveTodo para devolver tareas a la lista principal.
¿Cómo funciona la función unarchiveTodo en el view model?
La lógica vive en el view model y reutiliza la misma estructura que ya usaste para archivar. La diferencia está en el valor final que asignas al parámetro isArchived.
La función recibe un TodoEntity y sigue tres pasos claros:
- Buscar el índice del to-do dentro de la colección comparando con un igual a través de toda la lista.
- Validar que el índice exista; si no, sales de la función con un return.
- Acceder al elemento por su índice y cambiar
isArchivedafalse.
Después llamas a saveData() para persistir el cambio. Como la colección es un dato observable, la vista reacciona sola: el ítem desaparece de la pantalla de archivados y vuelve a aparecer en la principal sin que tengas que refrescar nada manualmente.
¿Qué hace exactamente unarchiveTodo? Cambia la propiedad
isArchivedde un to-do afalse, lo guarda y deja que la vista observable actualice ambas listas automáticamente.
¿Por qué validar el índice antes de modificar?
Si intentas acceder a una posición que no existe en la colección, la app puede crashear. Validar el índice antes de modificar es una práctica defensiva que mantiene tu código a salvo de estados inconsistentes, sobre todo cuando trabajas con listas que cambian en tiempo real.
¿Cómo conectar el botón plus con la acción de desarchivar?
En el diseño del ítem archivado tienes dos botones. El botón plus es el encargado de devolver la tarea a la lista principal. La conexión con el view model es directa.
Dentro del componente del ítem archivado, ubicas el botón plus y en su acción llamas a viewModel.unarchiveTodo pasando el to-do actual como argumento. Eso es todo lo que necesitas en la vista, porque la lógica pesada ya quedó encapsulada en el view model.
¿Cómo se actualiza la vista al desarchivar? Al usar datos observables en SwiftUI, el cambio de estado en la colección se propaga automáticamente y los elementos se muestran u ocultan según corresponda.
¿Cómo verificar que el flujo funciona en la app?
Una vez ejecutas la aplicación, el comportamiento es inmediato y verificable a simple vista.
Abres la lista de archivados, identificas una tarea como nota dos, presionas el botón plus y la verás desaparecer de esa pantalla. Al volver a la pantalla principal, la tarea reaparece junto a las demás. Lo mismo sucede con tarea tres o nuevo to-do: cada elemento desarchivado regresa a su lugar original sin pasos adicionales.
Este pequeño ciclo (archivar con true, desarchivar con false) demuestra el poder del patrón MVVM combinado con propiedades observables: una sola fuente de verdad, dos vistas sincronizadas y cero código repetido para mantener la UI al día.
¿Ya probaste extender esta lógica para eliminar definitivamente un to-do? Cuéntame en los comentarios cómo estructuraste tu view model.