Esta es la URL 😄
https://gamestream-api.herokuapp.com/api/games/search?contains=
(También está en los recursos de la clase)
Introducción al curso
Construyamos una app para iOS
Introducción a la arquitectura MVVM
Planeando nuestra app
Creando las primeras pantallas de la app
Programando la primera pantalla en módulos
Escribiendo la lógica para mostrar dos pantallas
Pantalla de inicio de sesión con SecureField y Scroll
Completando nuestra pantalla de inicio de sesión
Pantalla de registro de usuario
Comprobando el funcionamiento de nuestras pantallas
Estructura de las pantallas con TabView
Creando nuestra pantalla home
Pantalla home: logo y barra de búsqueda
Pantalla home: programación de interfaces estáticas
Pantalla home: carruseles
Aplicando arquitectura MVVM
Creando estructura para arquitectura MVVM
Modelando nuestro JSON
Peticiones al servidor
Mostrar información de un servidor de manera dinámica
Mostrar imágenes de forma dinámica y eficiente con LazyVGrid
Reproductor y búsqueda de video
Pasar datos entre pantallas
Darle datos de inicio a un Canvas
Reproducir videos dinámicamente de un servidor
Mostrar imágenes dinámicamente de un servidor
Mostrar alertas
Programar clase de búsqueda
Programar método de búsqueda
Últimas pantallas de la app
Pantalla de favoritos
Pantalla de perfil de usuario
Módulo de ajustes de perfil con Toggle
Pantalla de edición de perfil
Módulo de edición de perfil
Guardado interno de datos
Utilizando la cámara y fotos del iPhone
Captura de foto de perfil: ImagePicker y vista Sheet
Captura de foto de perfil con la cámara: modificar librerías de terceros
Captura de foto de perfil con la cámara: recuperar imágenes guardadas
¿Qué más posibilidades tiene SwiftUI?
Mejoremos nuestra app
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
Al desarrollar aplicaciones que requieren búsqueda de datos en servidores, es esencial establecer un flujo de operaciones sólido y eficiente. En este contexto, usaremos el patrón de diseño MVVM para integrar la lógica de búsqueda en nuestra aplicación de iOS, específicamente en la parte del view model. Este enfoque no solo mejora la organización del código, sino que también facilita el mantenimiento y la escalabilidad de la aplicación.
Para comenzar, creamos un archivo Swift destinado exclusivamente para manejar la lógica de búsqueda. Lo nombraremos "SearchGame" para reflejar su funcionalidad específica dentro del esquema MVVM:
import Foundation
class SearchGame: ObservableObject {
// Variables y métodos se agregarán en las siguientes secciones
}
Este archivo debe tener un nombre que refleje claramente su propósito, siguiendo una convención de nomenclatura intuitiva y coherente para mejorar la claridad y la navegabilidad del proyecto.
Dentro de SearchGame
, definiremos propiedades y métodos esenciales para ejecutar búsquedas de videojuegos eficientemente.
Utilizamos Property Wrappers como @Published
para actualizar la vista de manera reactiva cuando la información cambia:
@Published var gameInfo: [Game] = []
Esta propiedad almacenará los resultados de las búsquedas de videojuegos.
El método para realizar búsquedas debe aceptar el nombre del videojuego y realizar la solicitud a la API evitando conflictos y datos redundantes:
func search(gameName: String) {
self.gameInfo.removeAll() // Limpia resultados previos
guard let gameNameEncoded = gameName.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) else { return }
let urlString = "https://api.example.com/games/search?query=\(gameNameEncoded)"
guard let url = URL(string: urlString) else { return }
let request = URLRequest(url: url)
URLSession.shared.dataTask(with: request) { data, response, error in
guard let data = data else { return }
if let results = try? JSONDecoder().decode(Results.self, from: data) {
DispatchQueue.main.async {
self.gameInfo.append(contentsOf: results.results)
}
}
}.resume()
}
Este código realiza lo siguiente:
addingPercentEncoding
para manejar espacios en los nombres.URLSession
para manejar solicitudes de red asincrónicas. Los resultados se almacenan en gameInfo
una vez decodificados.Es fundamental definir el modelo que refleje la estructura de datos esperada de la API. Podemos implementar el protocolo Codable
para facilitar la decodificación:
struct Results: Codable {
var results: [Game]
}
struct Game: Codable {
var title: String
var studio: String
// Otros campos relevantes
}
Esta codificación asegura que estarán correctamente configurados para recibir y procesar la información de la API eficientemente.
Implementar un sistema robusto de búsqueda en aplicaciones móviles es un proceso iterativo que demanda considerar factores como el manejo de errores, la eficiencia de la búsqueda y una interfaz de usuario intuitiva.
Con esta clase bien estructurada, estamos preparados para integrar una funcionalidad de búsqueda eficiente y efectiva en nuestra aplicación de iOS. Cada paso que damos no solo mejora la funcionalidad de la aplicación, sino que también nos acerca más a la maestría en el diseño y arquitectura de software modernos.
Aportes 2
Preguntas 0
Esta es la URL 😄
https://gamestream-api.herokuapp.com/api/games/search?contains=
(También está en los recursos de la clase)
Hola!
Estuve revisando la documentación y se cambió el link de la API. Pueden utilizar este:
https://gamestreamapi.herokuapp.com/api/games/search?contains=
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?