VIPER-Arquitectura para el proyecto iOS con un sencillo ejemplo de demostración.

La API REST utilizada en el proyecto

Las APIs REST se utilizan a menudo en aplicaciones móviles, sitios web de redes sociales, herramientas mashup y procesos de negocio automatizados. El estilo REST enfatiza que las interacciones entre los clientes y los servicios se potencian al tener un número limitado de operaciones. Usando este enlace que se menciona a continuación estamos tratando de obtener los datos json.

Pantalla 1- Módulo de Aviso: Al abrir la aplicación obtendrá el resultado de la lista de avisos que contiene notice-title, notice-brief, notice-filesource que se obtiene utilizando Alamofire usando este notice-api.

Notice-Module-API: https://api.myjson.com/bins/1bsqcn/

Pantalla 2- Módulo-Película: Si usted hace clic en cualquiera de los elementos de la lista de la tabla que se empuja a otra película-vista-controlador que contiene la imagen, el título y el resumen que se obtiene utilizando Alamofire utilizando esta película-api.

Movie-Module-API: https://api.myjson.com/bins/1h87n6

Podfile:

En el podfile hemos incluido el Alamofire para llamar a otros apis, AlamofireImage para cargar imágenes en la tableView y AlamofireObjectMapper para mapear el modelo o entidad.

AppConstants.swift

NoticeModel.swift

La capa Entity proporciona un modelo que el interactor utiliza para crear objetos a partir de los datos obtenidos. La Entidad es probablemente el elemento más simple dentro de una estructura VIPER. Una cosa importante a notar es que la Entidad es diferente de la Capa de Acceso a Datos, la cual debe ser manejada por el Interactor. Aquí, usamos un mapeador de objetos para mapear el objeto JSON de respuesta y el objeto MODEL.

NoticeProtocol.swift

Usamos protocolos para definir los métodos que un componente del módulo puede llamar desde otros componentes del mismo módulo. Simplemente podemos decir, que los protocolos se utilizan para comunicarse entre las diferentes capas.

NoticePresenter.swift

NoticeInteractor.swift

Interactor es la sección integral principal donde reside todo el login de negocio. Creamos una instancia de InteractorToPresenterProtocolo para enviar la respuesta de éxito o error llegó a través de las APIs a Presenter.

NoticeViewController.swift

NoticeViewController sólo muestra los datos en el tableView que llegó a través de la respuesta de las APIs. Aquí implementamos el PresenterToViewProtocolo como extensión para recibir los datos llegados a través del presentador. Y creamos la instancia de presenter:ViewToPresenterProtocol para las llamadas a las APIs de la red.

NoticeRouter.Swift

La capa de enrutamiento es responsable del wireframing de la aplicación como el cambio entre las diferentes pantallas. En este proyecto el enrutamiento ocurre cuando la aplicación se lanza por primera vez. Así que dentro de la función ‘didFinishLaunchingWithOptions’ de AppDelegate se llama a la función createModule() del router que devuelve un módulo. La clase UIWindow entonces muestra la vista de ese módulo.

AppDelegate.swift

En AppDelegate, sólo creamos la instancia de UINavigationViewController pasando la instancia de NoticeViewController y establecemos este UINavigationView Controller como el controlador de vista raíz.

Por favor, clona o descarga el proyecto completo desde GITHUB. Y por último, enhorabuena has aprendido los fundamentos de VIPER. Feliz codificación. Si encuentras este artículo útil por favor no olvides compartir, recomendar y aplaudir.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.