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

No se trata de lo que quieres comprar, sino de quién quieres ser. Invierte en tu educación con el precio especial

Antes: $249

Currency
$209

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Suscríbete

Termina en:

11 Días
5 Hrs
39 Min
5 Seg

Programar método de búsqueda

26/36
Recursos

Aportes 5

Preguntas 1

Ordenar por:

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

No creo que el dispatch queue como método de espera sea una buena idea. Lo correcto es agregar un closure al método de busqueda del ViewModel o que notifique que ya hay datos.

Creo que para todos en este punto del curso no nos parece recomendable el uso de asyncAfter para simular una espera de que los datos ya hayan cambiado. Y que la mejor forma de resolverlo es haciendo que la función avise que la petición ya fue completada.

Les dejo mi implementación:

1.En la función que usen para traer los datos, agreguen un parámetro de tipo función, con el atributo @escaping. En mi caso mi función es requestData.

  1. Ejecuten la función devolviendo true en el lugar donde los datos son actualizados en el Observable. (Por mi parte estoy manejando también errores)
  1. Implementen el closure al ejecutar la función.

That’s it. Me parece una buena alternativa a esa parte del tutorial

iOS 16+ Usando async/await ```js class SearchModel:ObservableObject { @Published var gameInfo = [Game]() @MainActor func search(gameName:String) async { gameInfo.removeAll() let gameNameSpaces = gameName.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) let gamesURL = URL(string: "https://gamestreamapi.herokuapp.com/api/games/search?contains=\(gameNameSpaces ?? "cuphead")")! let (data, _) = try! await URLSession.shared.data(from: gamesURL) let gameModel = try! JSONDecoder().decode(Results.self, from: data) self.gameInfo.append(contentsOf: gameModel.results) } } ```

no me funciona la api. desde hace varias clases ya 😦

Para iOS16 aquí se puso duro el reto, mucho de investigar, mucho prueba y error pero al final llegue a una solución que se las comparto.

Hay que poner todo el contenido del body del struct PantallaHome y subModuloHome dentro de un NavigationStack

Ahora, después de cada botón o al final del textfield, para que nos envíe a la pantalla de gameView y pase la información, tenemos que escribir un navigationDestination(isPresented:destination:)

Por alguna razón que aun desconozco, tenemos que poner nuestro valor iniciar de url con algún link de algún video porque si no nos regresa un nil y no ejecuta la acción, entonces el url del video de cuphead pero tranquilos, al momento de presionar los botones, ejecuta las funciones y reemplaza los valores, hasta el momento no he tenido ningún problema ni error, incluso baje un poco el tiempo de respuesta para ejecutar el watch game y que sea un poco mas fluido