Pequeñas perlas para programar con Swift

Swift es un lenguaje de programación joven e intuitivo, con ciertas características que lo convierten en una opción más segura que otros lenguajes. En esta ocasión, te dejamos unas pequeñas perlas que te ayudarán a sacarle partido y a escribir un código aún mejor.

Availability Checking

¿Cuántas veces te has visto escribiendo un trozo de código como este para poder soportar varias versiones de iOS a la vez?

La intención del código anterior es buena y obvia, y muchas veces necesitamos saber en qué versión de iOS nos encontramos pero no nos da la garantía de que vaya a funcionar correctamente.

Aunque ya vamos por Swift 4, desde la segunda versión del lenguaje tenemos a nuestra disposición la característica de availability checking para comprobar si el API que queremos usar está disponible y nos muestra errores en tiempo de compilación si estamos haciendo algo mal.

En el siguiente ejemplo se puede ver cómo acceder a la nueva API de contactos disponible desde iOS 9:

Con un sencillo 'if' es más que suficiente para realizar la que de otra forma se torna en una complicada y tediosa comprobación. Tan solo tenemos que especificar qué SO (iOS, OSX) y versión (al menos 9.0 en este caso) y nuestra comprobación queda completa.

Otra de las características de availability checking es que también podemos exponer condicionalmente un API para que sea consumida por cualquier otra entidad en función de la versión del SO

Simple, ¿cierto? Esta pequeña perla te ayudará a escribir código mucho más seguro, expresivo y mantenible a la hora de dar soporte a múltiples versiones de la plataforma.

Para más información sobre esta característica de Swift, puedes visitar las siguientes referencias:

Inicialización de structs

Como ya deberías saber, los structs son tipos por valor que cuando se usan apropiadamente nos dan el beneficio de la inmutabilidad.

Ahora dime, ¿cuántas veces has declarado un struct tal que así sólo para tener calladito al compilador?

Y cuando tenías que asignar valores a una instancia hacías algo así...

Entonces voy a hablarte de otra característica de Swift, los memberwise initializers. Esta característica de Swift genera automáticamente un método init que tiene exactamente los mismos argumentos y en el mismo orden en el que las propiedades de tu struct están declaradas haciendo posible inicializar tus structs con tan solo una línea.

Si combinamos esto con el uso de propiedades constantes declaradas mediante let, tu struct se convierte en un tipo por valor inmutable.

Ahora te preguntarás: "¿Y qué hay si necesito más flexibilidad a la hora de inicializar mi struct?" o "¿Y si no quiero una de las propiedades dentro de mi inicializador?". Perfecto, no hay problema. Siempre puedes escribir tu propio inicializador tal y como harías con una clase puesto que las mismas reglas siguen siendo válidas.

¡Espero que estas pequeñas perlas del lenguaje te ayuden a escribir un código aún mejor y sobre todo aún más seguro!

 

Roberto Estrasa Senior iOS Engineer en intelygenz