APIs Públicas Repositorio 100% nativo en Swift en UIKIt en el que se realizan conexiones a diferentes API Rest. Para cada API he utilizado 3 diferentes patrones para manejar la asincronía:
- Patrón
callback
- Librería
Combine
- Modelo de concurrencia
Async-await
.
Proporciona en formato json un número generado de manera aleatoria y su detalle como su equivalente en Binario, su version en Romano, Chino, si es primo, perfecto, triangular, etc.
Para la gestión de la asincronía se utiliza el patrón callback
y URLSession
Proporciona en formato json un chiste aleatorio relacionado el legendario Chuck Norris.
Implementación
Patron Callback
yURLSession
para la conexión a la API ChuckNorrisNetworkNotificationCenter
para la notificación del cambio en de los valores en las propiedades.- Persistencia de datos con un archivo
JSON
que se guarda en carpeta de documentos de la app. TableView
para los items persistidos- Unit Tests del
ModelLogic
y un Mock deURLSession
gracias aURLPRotocol
ChuckURLSessionMock
Proporciona información sobre la división administrativa de regiones, departamentos y municipios en Francia. Datos por municipio como código postal, población.
Implementación
Combine
yURLSession
para la conexión a la API CommunesNetworkNotificationCenter
para la notificación del cambio en de los valores en las propiedades.TableView
para los listados- Unit Tests del
ModelLogic
con un Mock en la petición a red CommunesUnitTests
API que genera un avatar personalizable en formato SVG, PNG o JPG, con opciones como color de fondo, ojos, boca, tamaño, rotación, etc.
Implementación
- Hecho con el modelo de concurrencia
Async-await
Statics NotificationCenter
para la notificación del cambio en de los valores en las propiedades.- Permite la persistencia de datos través de
CoreData
.APIRestDemoDataBase CollectionView
para mostrar los elementos persistidos
Diferentes APIs de las que se obtiene un listado de países ( 250 ) y a partir de esa información se consulta en otras APIs para la descarga de la bandera del icono de la tabla, la bandera en tamaño 128x96, y una cuarta API con APIKey que permite la consulta de la regiones y ciudades del país seleccionado.
Implementación
- Hecho con la funcionalidad
Continuations
que permite crear un puente entre la función de red concallback
para convertirlo a un código asíncrono (async-await). Countries Network - Interfaz de red que implementa un ApiKey para el acceso a las regiones y ciudades.
NotificationCenter
para la notificación del cambio en de los valores en las propiedades.MapKit
para mostrar la localización de la ciudad elegida y calcular la distancia hasta la localización del usuario CountryDetailViewController
API que obtiene de la API Developer Marvel un listado de imágenes de los personajes, a los que se les puede marcar como favorito.
Implementación
- Hecho con el modelo de concurrencia
Async-await
NotificationCenter
para la notificación del cambio en de los valores en las propiedades.- Las
CollectionViews
están implementadas con la claseDiffableDataSource
para la gestión de los elementos. MarvelCharactersModelLogic - Grupos de tareas permiten la concurrencia de
Async-await
en la devolución de las imágenes de los personajes MarvelCharactersNetwork - El diseño de las celdas de las
CollectionViews
está implementado en SwiftUI gracias elUIHostingConfiguration
MarvelCharactersCollectionViewController - Interfaz de red que implementa un timestamp, ApiKey y hash para el acceso a la API