Swift 3: Integración con tecnologías backend

Conversión de JSON a nuestro modelo

¡Prueba gratis durante 10 días

nuestros 1267 cursos !

Prueba gratis Mostrar modalidades de suscripción
Foundation es un framework de interfaz de usuario responsive que incluye componentes HTML, CSS, plantillas y fragmentos de código. En este video utilizaremos Foundation para convertir JSON y poder hacer las peticiones de forma natural con las bibliotecas estándar de iOS.

Transcripción

Muy bien, ahora lo que hará falta será convertir estos registros, que tenemos en nuestra base de datos, a instancias de nuestra clase "user" en nuestro cliente de iOS. Ahora, para fines prácticos, lo que vamos a hacer es específicamente, ya que tenemos el objeto de JSON, lo vamos a llevar a múltiples instancias, o a un arreglo de instancias, dentro de nuestro cliente de iOS. Quiero que notes por favor, aquí en los "headers", - esto es muy importante - así cómo yo estoy colocando los "headers" de repuesta aceptada y del contenido como JSON, necesito poner los mismos "headers" en mi cliente de iOS. Regresando a mi cliente de iOS aquí ya tenemos una clase que se llama "User Service". Aquí yo he hecho un pequeño ajuste a nuestra respuesta. Básicamente, simplemente estoy imprimiendo el objeto y después me estoy trayendo el "JSON Object" con un bloque. Este bloque es el que estoy definiendo en la firma. Eeste bloque va a tomar "any" con un opcional y lo va a "escapar". ¿Qué significa esta anotación? Bueno, "Swift" tiene estas anotaciones para poder escapar o guardar el "closure", incluso después de que se haya ejecutado toda la función. ¿Cómo funciona? Bueno, pues imagina que cuando alguien está haciendo la petición de "request index", va a terminar en "resume" y este bloque de aquí se va a guardar. Cuando esto se ejecute, en algún momento, esta función ya habrá terminado, entonces todo lo que está aquí adentro simplemente estará guardado por fuera de la ejecución del "stack". Ahora, ese "stack" queda como pendiente y lo que necesitamos es que el "closure" que se llama "completed" se guarde o se escape de la ejecución del "stack" de esta función. Es un poco complejo cuando te pones a mirarlo en tiempo de ejecución pero en realidad lo único que estamos haciendo es guardar la referencia de "completed" incluso aunque se haya terminado de ejecutar toda esta función. Ahora, ya que tenemos esto, lo que vamos a hacer es que este objeto que le estamos dando, se lo estamos regresando a quien haga la llamada de "request index", y eso es la clase de "user". La clase de "user" tiene por aquí el método "all" y "all" está haciendo una petición de "request index". Si te fijas, aquí ya estoy escribiendo el JSON. Este JSON es el que viene en el "closure", en el parámetro del "closure" y este JSON lo que voy a hacer es que le voy a hacer un "down casting" a un arreglo de un diccionario con una cadena y con cualquier objeto. Esto me va a permitir hacer todas las llamadas como si fuera un diccionario. Esto va a ser muy rápido y va a ser muy intuitivo. Ya que tengo esta colección de objetos, que en realidad eso son, son objetos, todavía no son usuarios, lo que voy a hacer es que los voy a iterar con un "for in". Cada uno de estos objetos, ahora en singular, lo que voy a hacer es que les voy a hacer un "append". ¿Un "append" a qué? A un arreglo de usuarios llamado "community". Este arreglo va a ser un arreglo estático en el cual voy a poder ir haciendo un "append" o le voy a ir agregando elementos a este arreglo pero siempre y cuando sean de tipo "user". Ahora, ya que tenemos esto, el "append" va a ser un inicializador en donde recibe un diccionario y un objeto. De esta manera va a ser muy sencillo y muy claro que se van a ir creando de uno en uno. Este inicializador en realidad lo estoy escribiendo aquí, este es completamente nuevo. Si te fijas, tiene un inicializador parecido, pero este es más sencillo, este es el que utilizamos antes. Ahora vamos a utilizar este que nos va a permitir hacer el "parsing". Esto es el "parsing", básicamente es tener una estructura de un JSON complejo y bajarlo a objetos de dominio, a eso se le llama un "parsing". Lo que estoy haciendo es que de estos objetos me estoy trayendo las llaves "nombre", "edad", "país", "verificado", "username" y "password" y los estoy "casteando" a sus tipos correspondientes. Todas estas propiedades son las que están definidas aquí arriba. Ahora, esto me va a generar un arreglo con un conjunto de usuarios. ¿Qué es lo primero que necesito hacer? Bueno, pues obviamente, necesito mandar a llamar primero a "all" para que haga la petición y yo los pueda tener en memoria. Entonces, en el "Application Delegate", inmediatamente después de que la aplicación haga el "launch" va a hacer la petición de estos usuarios. Ya cuando tenga yo la petición, lo que voy a hacer es que en el "FriendsTableViewController" voy a colocar simplemente este "if" por si llego a volver a entrar y nuestra conexión de comunidad no está vacía, no quiero que vuelva a hacer la petición al servidor. En caso de que este arreglo esté lleno, lo que vamos a hacer es que lo vamos a asignar a nuestro arreglo de amigos. ¿Recuerdas este arreglo de amigos que aquí abajo construíamos a mano? Bueno, pues simplemente voy a tener que regresarle este arreglo de comunidad que yo ya tengo en mi clase "user" y listo. Si te fijas, no vamos a modificar nada, simplemente vamos a colocarle aquí el nombre o podemos colocarle el "username", en realidad no importa. Lo que importa muchísimo es cómo están conectados los elementos. El "Application Delegate" hace la petición cuando llega al "ViewController", simplemente revisa si la petición está hecha y si no, la hace. Y si está hecha, simplemente la asigna al arreglo. Cuando esta petición se hace, "users" manda a llamar al "request index", el "request index" hace la petición con el metodo "get" y los "content type" que necesitamos, nos regresa el JSON con los objetos que vamos a estar serializando, de aquí, estos objetos, de uno en uno se van transformando en instancias de nuestra clase objeto y después se van agregando al arreglo que tenemos en esta clase. Bastante sencillo. Ahora, esto es por lo regular lo que se hace cuando estás trayendo un conjunto de elementos. Vamos a probar este flujo. Vamos a darle clic aquí en "build and run" nos va a abrir nuestra aplicación de iOS y le voy a dar clic en donde dice "Login". Si te fijas, aquí ya hizo la petición. Me voy a pasar a "Friends" y aquí ya tengo los dos registros que están en mi base de datos. Ahora, ¿cómo sé que sí están conectados arriba? Bueno, vamos a hacer una pequeña prueba con "Postman". Voy a parar mi aplicación, voy a regresar a "Postman" y aquí ya tengo una tercera petición. Esta petición, lo que tiene es que en el contenido voy a agregar a otra persona. Aquí voy a escribir los cambios de esta nueva persona. Voy a cambiar también el "username" y voy a enviar esta petición. Le voy a dar "Enviar". Cierto, el puerto, 3000. Le voy a dar "Enviar", y listo, ya entregó el "ID 3". Si yo pido todos los usuarios, en vez de tener 2, voy a tener 3 registros y si vuelvo a compilar y ejecutar mi aplicación nos vamos a dar cuenta que voy a tener una tercera fila en mi "Table View". Aquí está la petición, le voy a dar "Login", "Friends" y aquí está. Soolo tuve que agregar un nuevo registro a través de "Postman" y mi servicio REST y con eso mi cliente va a poder utilizar todas las instancias que estén arriba. Lo más importante es que estas estructuras, estas clases ya son parte de nuestro dominio y son instancias con las que yo puedo controlar del lado del cliente. Ahora, existen otras formas de poder hacer esto un poco más sencillas, pero básicamente este es el flujo que se tiene que hacer a mano. Este es el flujo en el cual, sin ninguna ayuda extra sin ningún "post", sin ninguna librería, tú puedes lograr para poder hacer el "parsing" de los objetos que estén en tu servicio REST.

Swift 3: Integración con tecnologías backend

Aprende a vincular tus aplicaciones web creadas con Swift 3 con el servidor, comienza a enviar información entre ambos y aprovecha esto al máximo dentro de tus sistemas.

3:08 horas (27 Videos)
Actualmente no hay comentarios.
 

Este curso video2brain está disponible como descarga y para ser visualizado online. ¡Pero no hace falta que decidas entre las dos opciones! Al comprar el curso, disfrutarás de ambas posibilidades.

La descarga te permite ver las lecciones sin estar conectado/a a internet y supone una navegación fácil y ágil entre capítulo y capítulo. Si vas a trabajar en diferentes ordenadores o si no quieres descargarte el curso completo, entra en la web con tus datos de acceso y disfruta directamente de tus vídeos online. Te deseamos que disfrutes de este curso y te resulte de mucha utilidad.

Estamos a tu disposición si tienes cualquier tipo de duda o pregunta.