Introducci贸n al Patr贸n MVVM
Todo para Uno y Uno para Todos
Arquitectura y Dise帽o en Apps iOS
Patrones MVC y MVP en Apps iOS
Principios SOLID
Patr贸n de arquitectura MVVM
Quiz: Introducci贸n al Patr贸n MVVM
Estructura de un Proyecto con MVVM
Inicio del proyecto y estructura b谩sica MVVM
Paquete Models
Core Data
Paquete Views
ViewModel
Quiz: Estructura de un Proyecto con MVVM
Operaciones CRUD en un proyecto con MVVM
Agregar ToDos (Parte 1)
Agregar ToDos (Parte 2)
Listar ToDos
Actualizar ToDos
Archivar ToDos
Desarchivar ToDos
Eliminar ToDos
Actualizar el estado de los ToDos
Dise帽o y Validaci贸n de Vistas para ToDos
Quiz: Operaciones CRUD en un proyecto con MVVM
Clean Architecture
Introducci贸n a Clean Architecture
Estructura de Clean Architecture
Inicio del proyecto con Clean Architecture
Capa de Datos
Comunicaci贸n de red HTTP con TheMovieDB
Capa de Dominio
Capa de Presentaci贸n
Integraci贸n de Capas
Quiz: Clean Architecture
MVVM y Clean Architecture
Highlights
No tienes acceso a esta clase
隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera
El desarrollo de aplicaciones se trata de proporcionar funcionalidad y mejores experiencias al usuario. Esta clase te guiar谩 sobre c贸mo implementar una caracter铆stica esencial: el archivado de tareas en una aplicaci贸n de lista de pendientes.
El 'ViewModel' es el encargado de manejar la l贸gica de negocio de nuestra aplicaci贸n. Para archivar una tarea o "to-do", es esencial implementar la funci贸n archiveTodo
. Aqu铆 los pasos para hacerlo:
archiveTodo
en el ViewModel. fun archiveTodo() {
// Verificamos si el ID del todo existe
val index = getTodoIndex(todo)
if (index < 0) return // Si el elemento no existe, salir de la funci贸n
// Modificamos el estado a 'archivado'
todos[index].isArchived = true
saveData() // Guardamos los cambios
}
Verificaci贸n de Existencia: La funci贸n busca el 铆ndice del "to-do" a trav茅s de getTodoIndex
. Si no encuentra, se detiene la ejecuci贸n.
Modificaci贸n del Estado: Se cambia el atributo isArchive
del "to-do" a true
. Esto indica que el 铆tem est谩 archivado.
Guardar Cambios: Se utiliza saveData()
para persistir esta modificaci贸n en el contexto de Core Data.
La interacci贸n de la interfaz de usuario con nuestra l贸gica es crucial para integrar estas funcionalidades sin problemas.
Referencia de Bot贸n: Dentro de ToDoPreviewView
, localizamos el bot贸n de archivar.
Llamado a la Funci贸n: Usamos el ViewModel para llamar a archiveTodo
cuando se presiona el bot贸n.
// En el archivo ToDoPreviewView.swift
Button(action: {
viewModel.archiveTodo()
// Limpiamos el todo seleccionado y cerramos la vista
selectedTodo = nil
}) {
Text("Archivar")
}
Basta con archivar los "to-dos". Ahora, necesitamos un procedimiento para mostrar una lista de tareas archivadas que proporcione valor agregado al usuario.
ToDoArchiveListView
, define una colecci贸n filtrada de tareas archivadas. let archivedTodos: [TodoEntity] = viewModel.todos.filter { $0.isArchived }
ForEach
para iterar y mostrar solo los elementos cuya propiedad isArchive
sea true
. ScrollView {
if !archivedTodos.isEmpty {
ForEach(archivedTodos, id: \.id) { todo in
Text(todo.title)
// Se puede mejorar m谩s el dise帽o, con detalles del 铆tem
}
} else {
Text("No hay tareas archivadas.")
}
}
El dise帽o y la presentaci贸n pueden mejorar significativamente la experiencia del usuario. Aqu铆, respondemos al c贸mo y qu茅 del dise帽o de estas tareas archivadas.
ItemView
: Dentro de los elementos de la lista, agrega un HStack
o VStack
para mostrar la informaci贸n como el t铆tulo y la fecha. VStack(alignment: .leading) {
Text(todo.title)
.font(.headline)
Text(todo.date, formatter: DateFormatter.short)
.font(.subheadline)
}
.padding(.vertical, 4)
La integraci贸n de estas caracter铆sticas no solo lleva la aplicaci贸n al siguiente nivel en t茅rminos de funcionalidad sino que tambi茅n garantiza una mejor experiencia de usuario. Con trabajo t茅cnico, dise帽o cuidadoso y pruebas continuas mejoras, puedes proporcionar una soluci贸n viable y robusta. 隆Mantente aprendiendo y no dudes en a帽adir nuevos desaf铆os a tus proyectos!
Aportes 0
Preguntas 1
驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?