Local Packages con Swift Package Manager

Recientemente he estado usando Swift Package Manager, en este post me enfocaré en una característica de SPM que me ha sido de mucha utilidad para la creación de frameworks internos y modularización en general: local swift packages.

Para una guía completa de este potente administrador de dependencias, recomiendo empezar por aquí:

Porqué usar swift packages?

  • Permiten agrupar código relacionado y organizarlo en una unidad individual que se pueda compilar por sí sola.
  • Permite la reutilización de paquetes en múltiples proyectos, disminuye el tiempo de desarrollo, puedes trabajar de paralelamente con tus compañeros.
  • Si estoy trabajando con la aplicación principal o con otro package, los packages no tienen que recompilarse.
  • Soporte para compilación en paralelo.
  • Es la aplicación de Responsabilidad única (SOLID) aplicada a un nivel más alto.

Cómo empezar.

Continue reading Local Packages con Swift Package Manager

Sobre el Patrón Coordinador en iOS

Cuando aprendí a desarrollar aplicaciones para iOS uno de los tópicos que se incluyen es cómo manejar la navegación dentro de la aplicación o cómo ir de una pantalla a otra.

Para enfrentar este problema tenemos un mecanismo provisto por Apple y Xcode: Storyboards y Segues

Al principio me parecía algo tan natural, después de todo, usar las herramientas que te provee Apple es la mayoría de las veces una apuesta segura.

Esto funciona para aplicaciones pequeñas, pero una vez que tu aplicación crece te enfrentas a distintos problemas:

  • La navegación es estática y usando storyboards se suele salir de control fácilmente.
  • Los View Controllers terminan con código que corresponde a la navegación (demasiada responsabilidad)
  • Alto acoplamiento entre ViewControllers (porqué el ViewController A tiene que conocer que debe mostrar el ViewController B y es más, por qué debe saber cómo crear o inyectar dependencias a este ViewController B)
  • Código repetitivo
  • Problemas de reusabilidad
  • Uso de una misma pantalla en distintos contextos
  • A/B testing
  • Push Notifications

Coordinadores

La idea de un Coordinador es simple.

Continue reading Sobre el Patrón Coordinador en iOS

Testing de ViewControllers en iOS

Escribimos mucho código de UI, tanto los ViewController como las UIView constituyen gran parte de nuestro código base. 

Además hay muchos casos extremos que tenemos que manejar al testear nuestras vistas.

Es poco habitual hacer pruebas sobre las Views, ya que generalmente se prueba la lógica de negocio, Casos de Uso, Repositorios, etc. relegando los test de UI.

Pero por qué?

Debo reconocer que es muy difícil cubrir todo el código de UI que tienes con tests unitarios.

Es mucho más  fácil probar lógica del negocio, pero probar vistas siempre me pareció algo no tan intuitivo. 

Hay varias formas de hacer tests sobre nuestras vistas:

Continue reading Testing de ViewControllers en iOS

¿Qué es la programación Funcional y porqué es importante?

Si estás relacionado en el mundo de desarrollo de iOS, probablemente te has topado con estos frameworks que Apple ha introducido en el último año:

SwiftUI: que nos proporciona un entorno de programación funcional para construir interfaces de usuario de forma declarativa en iOS y otras plataformas de Apple.

Combine: el nuevo framework de Apple de Programación Reactiva Funcional para el manejo de procesos asíncronos.

Y no podemos olvidar a:

RxSwift: mantenido por la comunidad, un framework que tiene como base “Programación Reactiva Funcional“.

Algo de lo que los desarrolladores iOS no podemos escapar es la parte funcional y si aún no has interactuado con estas herramientas al principio puede ser muy abrumante todos los nuevos conceptos tanto de la parte Funcional como la parte Reactiva 🤯


Es este post, abarco la parte funcional y cómo puedes usarlo en tu día a día cuando utilices Swift, la parte Reactiva la dejaré para otra entrada. Un paso a la vez. 🤓

Continue reading ¿Qué es la programación Funcional y porqué es importante?

Compila y despliega tu aplicación iOS con Azure DevOps 🚀

Llegó el momento de subir tu app al App Store o enviarla para pruebas a TestFlight. 

Si lo haces manualmente probablemente sigas los siguientes pasos: 

  • Limpiar el proyecto, compilar tus dependencias
  • Elegir el Schema correcto
  • Aumentar el Build Number
  • Firmar tu app usando los certificados de Distribución, así como los Perfiles de Aprovisionamiento.
  • Subirla al App Store

Hacerlo muchas veces puede llegar a ser repetitivo, consume mucho tiempo, y es propenso error. ( Cuántas veces te olvidaste de aumentar el build number).

Además si trabajar en un entorno ágil las iteraciones hacia el área de Testing deberían ser lo más rápido posible.

Si bien existen distintas soluciones cloud en el mercado (CircleCI, Bitrise, TravisCI). En esta entrada te mostraré cómo automatizar la compilación y despliegue de tu aplicación iOS usando Azure DevOps.

Al inicio puede que te lleve un poco de tiempo configurarlo, pero el tiempo que ahorrarás a futuro valdrá la pena.

Requisitos:

Continue reading Compila y despliega tu aplicación iOS con Azure DevOps 🚀