Unlimited WordPress themes, graphics, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Swift
Code

Swift 2: Verificación de disponibilidad

by
Difficulty:BeginnerLength:ShortLanguages:

Spanish (Español) translation by Steven (you can also view the original English article)

En este breve tutorial, me gustaría centrarme en la nueva sintaxis de Swift para la verificación de disponibilidad. Si has realizado cualquier cantidad de desarrollo de iOS u OS X, entonces estoy seguro de que sabes lo tedioso que puede ser verificar si una API en particular está disponible en el dispositivo en el que se ejecuta tu aplicación. En Swift 2, esto se ha convertido en un problema mucho menor para los desarrolladores.

El problema

Imagina el siguiente escenario. Estás desarrollando una aplicación para iOS que se dirige a iOS 7 y versiones posteriores. Durante la WWDC del año pasado, Apple presentó una nueva API para el registro de notificaciones.

¿Eso significa que necesitas aumentar el objetivo de implementación de tu aplicación de iOS 7 a iOS 8? Podrías hacerlo, pero dejarías una parte importante de la base de usuarios de tu aplicación en el frío, solo para cumplir con la nueva política de Apple para notificaciones locales y remotas. Tus usuarios no te lo agradecerán.

La alternativa es usar solo la nueva API en dispositivos que ejecutan iOS 8 y versiones posteriores. Eso tiene más sentido. ¿Verdad? La implementación se vería así.

Esta es una opción viable, pero no es sin riesgo. En este tutorial, no entraré en detalles sobre los riesgos que implican, pero sí quiero enfatizar que la mayoría de los desarrolladores piensan que está bien usar el enfoque anterior. El siguiente ejemplo muestra una variación de este enfoque, esta vez usando Objective-C.

Si bien ambos enfoques funcionarán en la mayoría de las situaciones, hay situaciones en las que tendrás problemas. Algunas API, por ejemplo, comienzan su vida como API privadas y se hacen públicas en una etapa posterior. En ese escenario, puedes terminar golpeando API privadas en dispositivos que ejecutan un sistema operativo en el que esas API aún no son públicas. Y estoy seguro de que sabes lo que eso significa.

La solución

Gracias al trabajo del equipo de Swift, la solución a nuestro problema es simple y directa en Swift 2. Echa un vistazo al siguiente ejemplo. Ten en cuenta que el objetivo de implementación del proyecto se establece en iOS 7, utilizando Swift 2 y Xcode 7.

The compiler throws an error.

En el ejemplo, estamos utilizando API que se introdujeron en iOS 8. Debido a que el compilador sabe que el objetivo de implementación del proyecto está establecido en iOS 7, arroja un error, que nos dice que las API que queremos usar solo están disponibles en iOS 8 y superior. Esto lo sabe al inspeccionar el SDK para obtener información sobre disponibilidad. Si presionas Command y haces clic en el método registerUserNotificationSettings(_ :), deberías ver algo como esto.

Afortunadamente, Xcode nos brinda una solución para resolver el problema. Sugiere usar una verificación de versión para evitar que se invoquen las API exclusivas de iOS 8 en adelante si nuestros usuarios ejecutan la aplicación en una versión anterior de iOS.

Ten en cuenta que esta característica se introdujo en Swift 2. El compilador no arrojará un error si estás utilizando Swift 1.2. La adición de la verificación de versión también hace que el ejemplo sea más fácil de entender. Echa un vistazo al siguiente ejemplo actualizado en el que seguimos los consejos que nos ha dado Xcode.

La sintaxis es clara y comprensible. Mediante la sintaxis de disponibilidad, verificamos si la aplicación se está ejecutando en un dispositivo con iOS 8 o superior. Si no es así, se omite la cláusula if; de lo contrario, la aplicación llama a la nueva API para el registro de notificaciones.

Sintaxis

La sintaxis es sencilla. Comenzamos la condición de disponibilidad con #available y ajustamos la condición entre paréntesis. Podemos agregar tantas plataformas como sea necesario, separando la lista de plataformas con comas.

Ten en cuenta que finalizamos la lista de plataformas con un asterisco. Este asterisco es obligatorio e indica que la cláusula if se ejecuta en el objetivo de implementación mínima para cualquier plataforma que no esté incluida en la lista de plataformas.

Como vimos anteriormente, podemos usar el atributo @available para agregar información de disponibilidad a funciones, métodos y clases. En el siguiente ejemplo, le decimos al compilador que useFancyNewAPI solo debe llamarse en dispositivos con iOS 9 y versiones posteriores.

Conclusión

Ten en cuenta que la sintaxis de disponibilidad no es una alternativa para los dos ejemplos que te mostré al comienzo de este tutorial. Estos ejemplos son defectuosos y solo deben usarse si estás utilizando Objective-C o una versión anterior de Swift.

La sintaxis de disponibilidad es otra razón más para migrar tus proyectos de Swift a Swift 2. Elimina las soluciones propensas a errores para verificar la disponibilidad de la API. El mundo se ve un poco más amigable con Swift 2. ¿No es así?

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.