- 1

Implementación de MVVM en Swift: Organiza y Optimiza tus Apps
01:53 - 2

Patrones de Arquitectura y Diseño en Desarrollo de Software iOS
10:34 - 3

Arquitectura MVC y MVP en Desarrollo iOS
06:29 - 4

Principios SOLID en Desarrollo de Software
03:56 - 5

Arquitectura MVVM en iOS: Principios Solid y Swift UI
05:59 quiz de Introducción al Patrón MVVM
Conexión a API y Manejo de Datos en Xcode usando Clean Architecture
Clase 24 de 28 • Curso de Patrones MVVM en iOS
Contenido del curso
- 6

Proyecto MVVM en Swift: Buenas Prácticas y Configuración Inicial
07:27 - 7

Modelo de Datos en MVVM: Creación de la Estructura Ítem en XCode
05:41 - 8

Creación de Modelo de Datos con Core Data en Xcode
07:47 - 9

Creación de Vistas en Xcode para Aplicaciones MVVM
06:13 - 10

Creación de View Models con Combine en Swift para Aplicaciones Reactivas
23:12 quiz de Estructura de un Proyecto con MVVM
- 11

Crear función "add todo" en arquitectura MVVM con Core Data
19:48 - 12

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

Listar y Detallar Notas en Aplicaciones de Tareas
22:35 - 14

Implementación de Funcionalidad de Edición en Aplicación de Tareas
13:42 - 15

Archivar Todos en Aplicación de Tareas
15:29 - 16

Desarchivar y Restaurar Tareas en Aplicaciones de Notas
03:26 - 17

Eliminar tareas en una aplicación de gestión de pendientes
04:15 - 18

Implementación de Estado de Tarea en Aplicación de Tareas
20:51 - 19

Creación de Vistas Amigables en SwiftUI para Aplicaciones de Tareas
19:52 quiz de Operaciones CRUD en un proyecto con MVVM
- 20

Implementación de Clean Architecture paso a paso
05:52 - 21

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

Estructura de Proyectos con Clean Architecture y The MovieDB API
06:01 - 23

Mapeo de JSON a Objetos Swift para TV Shows Populares
09:11 - 24

Conexión a API y Manejo de Datos en Xcode usando Clean Architecture
30:54 - 25

Casos de Uso en la Capa de Dominio para Aplicaciones de TV
09:35 - 26

Creación de la Capa de Presentación en SwiftUI con MVVM y Clean Architecture
15:38 - 27

Navegación en SwiftUI: Implementación de Detail View y ViewModel
21:54 quiz de Clean Architecture
La implementación de una API bajo la filosofía de Clean Architecture nos permite mantener una clara separación de responsabilidades y facilitar la escalabilidad del proyecto. Empezamos por crear nuestros modelos de datos, que son la base de todas las operaciones. Estos modelos se encuentran en la capa más interna de nuestra arquitectura, seguida por la capa de dominio y, finalmente, la capa de presentación.
¿Cómo crear un endpoint?
Para conectarnos a una API externa, debemos comenzar con la definición de nuestros endpoints. Esto implica crear un archivo en la carpeta network, que servirá como referencia para las rutas que necesitamos apuntar. Aquí definiremos dos enums principales, HTTPMethod y Endpoint:
enum HTTPMethod: String {
case get = "GET"
case post = "POST"
}
enum Endpoint {
case popularShows
case tvShowDetails(Int)
var url: URL {
// Construcción de la URL usando baseUrl y API Key
}
}
¿Cómo construir las URLs?
La construcción de URLs es crucial para que nuestra API funcione correctamente. Necesitamos definir una URL base a partir de la cual construiremos solicitudes específicas. El ejemplo de la base URL para The MovieDB podría ser:
let baseUrl = "https://api.themoviedb.org/3/"
Luego, añadimos el endpoint correspondiente, como tv para programas de televisión, y agregamos parámetros como la API Key y el idioma:
var urlComponents = URLComponents(string: baseUrl + "tv/popular")!
urlComponents.queryItems = [
URLQueryItem(name: "api_key", value: "YOUR_API_KEY"),
URLQueryItem(name: "language", value: "en-US"),
URLQueryItem(name: "page", value: "1")
]
¿Cómo implementar un cliente API?
La clase APIClient será responsable de manejar las solicitudes HTTP a la API. Este cliente preparará las solicitudes y decodificará las respuestas JSON:
final class APIClient {
func request(_ endpoint: Endpoint) async throws -> T {
let urlRequest = URLRequest(url: endpoint.url)
urlRequest.httpMethod = HTTPMethod.get.rawValue
let (data, _) = try await URLSession.shared.data(for: urlRequest)
let decoder = JSONDecoder()
return try decoder.decode(T.self, from: data)
}
}
¿Cómo manejar los repositorios?
En una arquitectura limpia, el repositorio actúa como un intermediario entre las capas de datos y de dominio. Aquí definimos un protocolo y su implementación:
protocol TVShowRepository {
func fetchPopularTVShows() async throws -> [TVShow]
func fetchTVShowDetails(id: Int) async throws -> TVShowDetails
}
final class TVShowRepositoryImplement: TVShowRepository {
private let apiClient: APIClient
init(apiClient: APIClient) {
self.apiClient = apiClient
}
func fetchPopularTVShows() async throws -> [TVShow] {
let response: PopularShowsResponse = try await apiClient.request(.popularShows)
return response.results
}
func fetchTVShowDetails(id: Int) async throws -> TVShowDetails {
return try await apiClient.request(.tvShowDetails(id))
}
}
¿Qué beneficios ofrece Clean Architecture?
Implementar Clean Architecture permite una mayor flexibilidad y mantenibilidad del código. Cada capa tiene responsabilidades claramente definidas, lo que facilita la sustitución o actualización de una parte del sistema sin afectar a las demás. Además, fomenta la reutilización del código y mejora la escalabilidad del proyecto.
Con cada paso cuidadosamente planeado e implementado, tu aplicación estará lista para gestionar eficazmente la comunicación con APIs externas, mantener un código limpio y ofrecer una gran experiencia de usuario.