Introducción al Patrón MVVM
Implementación de MVVM en Swift: Organiza y Optimiza tus Apps
Patrones de Arquitectura y Diseño en Desarrollo de Software iOS
Arquitectura MVC y MVP en Desarrollo iOS
Principios SOLID en Desarrollo de Software
Arquitectura MVVM en iOS: Principios Solid y Swift UI
Quiz: Introducción al Patrón MVVM
Estructura de un Proyecto con MVVM
Proyecto MVVM en Swift: Buenas Prácticas y Configuración Inicial
Modelo de Datos en MVVM: Creación de la Estructura Ítem en XCode
Creación de Modelo de Datos con Core Data en Xcode
Creación de Vistas en Xcode para Aplicaciones MVVM
Creación de View Models con Combine en Swift para Aplicaciones Reactivas
Quiz: Estructura de un Proyecto con MVVM
Operaciones CRUD en un proyecto con MVVM
Crear función "add todo" en arquitectura MVVM con Core Data
Funcionalidades básicas para gestionar tareas en SwiftUI
Listar y Detallar Notas en Aplicaciones de Tareas
Implementación de Funcionalidad de Edición en Aplicación de Tareas
Archivar Todos en Aplicación de Tareas
Desarchivar y Restaurar Tareas en Aplicaciones de Notas
Eliminar tareas en una aplicación de gestión de pendientes
Implementación de Estado de Tarea en Aplicación de Tareas
Creación de Vistas Amigables en SwiftUI para Aplicaciones de Tareas
Quiz: Operaciones CRUD en un proyecto con MVVM
Clean Architecture
Implementación de Clean Architecture paso a paso
Estructura y Ventajas de la Clean Architecture
Estructura de Proyectos con Clean Architecture y The MovieDB API
Mapeo de JSON a Objetos Swift para TV Shows Populares
Conexión a API y Manejo de Datos en Xcode usando Clean Architecture
Casos de Uso en la Capa de Dominio para Aplicaciones de TV
Creación de la Capa de Presentación en SwiftUI con MVVM y Clean Architecture
Navegación en SwiftUI: Implementación de Detail View y ViewModel
Quiz: Clean Architecture
MVVM y Clean Architecture
Arquitectura de Software: Clean Architecture y MVVM en Proyectos Reales
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
La capa de presentación es crucial porque interactúa directamente con el usuario y coordina la comunicación con las capas de dominio y datos. Este enfoque proporciona una separación de responsabilidades, asegurando que ningún componente dependa directamente de las implementaciones concretas, sino de abstracciones, como los protocolos.
Nuestra presentación se centra en los view models
, que utilizan protocolos para comunicar la capa de presentación con la capa de dominio, haciendo uso del caso de uso Get Popular TV Shows Use Case Protocol
. Este enfoque no solo fomenta la separación de responsabilidades, sino que también facilita el testeo.
Crear un ViewModel implica construir una clase que maneje datos observables y, en este caso, publicar los datos de los programas de televisión para que las vistas de Swift UI puedan observar y actualizarse automáticamente ante cualquier cambio.
import SwiftUI
final class PopularShowsViewModel: ObservableObject {
@Published var shows: [TVShow] = []
private let getPopularTVShowsUseCase: GetPopularTVShowsUseCaseProtocol
init(getPopularTVShowUseCase: GetPopularTVShowsUseCaseProtocol) {
self.getPopularTVShowsUseCase = getPopularTVShowUseCase
}
func loadPopularShows() {
Task {
do {
let shows = try await getPopularTVShowsUseCase.execute()
await MainActor.run {
self.shows = shows
}
} catch {
print("Error: \(error)")
}
}
}
}
En este ejemplo, PopularShowsViewModel
declara una propiedad @Published
para los programas de televisión shows
y utiliza un protocolo para el caso de uso GetPopularTVShowsUseCaseProtocol
. La función loadPopularShows
carga los programas populares mediante una llamada asincrónica al caso de uso.
Crear una vista en Swift UI implica declarar una referencia al ViewModel que manejará la lógica de la vista y permitir el acceso a los datos necesarios para presentar al usuario.
struct PopularShowsView: View {
@StateObject private var viewModel = PopularShowsViewModel()
var body: some View {
List(viewModel.shows, id: \.id) { show in
Text(show.name)
}
.onAppear {
Task {
await viewModel.loadPopularShows()
}
}
}
}
La estructura PopularShowsView
utiliza StateObject
para manejar el viewModel
, y muestra una lista de programas con show.name
en una vista tipo List
. Para asegurar la carga de datos al iniciar la vista, se ejecuta el método loadPopularShows()
dentro de onAppear
.
Para ejecutar correctamente la aplicación, se debe asegurar que el punto de entrada de la aplicación llama correctamente a la vista que hemos configurado. Esto generalmente se hace en el archivo ContentView
.
@main
struct MyApp: App {
var body: some Scene {
WindowGroup {
PopularShowsView()
}
}
}
En este caso, PopularShowsView
se llama desde la estructura principal de la aplicación, permitiendo que la vista en cuestión sea cargada al iniciarse la aplicación.
Este enfoque, unido a un diseño modular y separando las responsabilidades, logra que las aplicaciones sean más testeables y fáciles de mantener, tal y como se promueve en la arquitectura Clean. ¡Continúa explorando y aprendiendo para llevar tus habilidades de desarrollo a nuevos niveles!
Aportes 0
Preguntas 0
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?