Introducción al curso

1

Construyamos una app para iOS

2

Introducción a la arquitectura MVVM

3

Planeando nuestra app

Creando las primeras pantallas de la app

4

Programando la primera pantalla en módulos

5

Escribiendo la lógica para mostrar dos pantallas

6

Pantalla de inicio de sesión con SecureField y Scroll

7

Completando nuestra pantalla de inicio de sesión

8

Pantalla de registro de usuario

9

Comprobando el funcionamiento de nuestras pantallas

10

Estructura de las pantallas con TabView

11

Creando nuestra pantalla home

12

Pantalla home: logo y barra de búsqueda

13

Pantalla home: programación de interfaces estáticas

14

Pantalla home: carruseles

Aplicando arquitectura MVVM

15

Creando estructura para arquitectura MVVM

16

Modelando nuestro JSON

17

Peticiones al servidor

18

Mostrar información de un servidor de manera dinámica

19

Mostrar imágenes de forma dinámica y eficiente con LazyVGrid

Reproductor y búsqueda de video

20

Pasar datos entre pantallas

21

Darle datos de inicio a un Canvas

22

Reproducir videos dinámicamente de un servidor

23

Mostrar imágenes dinámicamente de un servidor

24

Mostrar alertas

25

Programar clase de búsqueda

26

Programar método de búsqueda

Últimas pantallas de la app

27

Pantalla de favoritos

28

Pantalla de perfil de usuario

29

Módulo de ajustes de perfil con Toggle

30

Pantalla de edición de perfil

31

Módulo de edición de perfil

32

Guardado interno de datos

Utilizando la cámara y fotos del iPhone

33

Captura de foto de perfil: ImagePicker y vista Sheet

34

Captura de foto de perfil con la cámara: modificar librerías de terceros

35

Captura de foto de perfil con la cámara: recuperar imágenes guardadas

¿Qué más posibilidades tiene SwiftUI?

36

Mejoremos nuestra app

No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Programar clase de búsqueda

25/36
Recursos

¿Cómo crear la clase necesaria para las búsquedas de videojuegos?

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.

¿Cómo configurar el archivo Swift para el modelo de búsqueda?

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.

¿Cómo definir propiedades y métodos en SearchGame?

Dentro de SearchGame, definiremos propiedades y métodos esenciales para ejecutar búsquedas de videojuegos eficientemente.

Paso 1: Declaración de propiedades

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.

Paso 2: Implementación del método de búsqueda

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:

  • Decodificación del nombre: Usa addingPercentEncoding para manejar espacios en los nombres.
  • Construcción de la URL: Integra el nombre del juego codificado en la URL de búsqueda.
  • Solicitudes a la API: Utiliza URLSession para manejar solicitudes de red asincrónicas. Los resultados se almacenan en gameInfo una vez decodificados.

¿Cómo estructurar los resultados de las búsquedas?

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.

¿Qué debemos considerar para mejorar la funcionalidad de búsqueda?

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.

  • Manejo de errores: Implementar caso de fallos en requests y decodificaciones.
  • Optimización de rendimiento: Minimizar la carga en la red mediante cacheo y búsqueda local previo.
  • Interacción del usuario: Actualizar la UI de manera fluida y responder adecuadamente a las acciones del usuario.

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

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

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=