Programación de Apps iOS para iPhone con Swift y SwiftUI - LaFactoríaApple

Operador Nil-Coalescing

En nuestro proceso de aprender a desarrollar Apps para móviles con el Lenguaje de Programación Swift, es muy importante la detección de Valores NULOS, de lo cual se encargará el Operador Nil-Coalescing.

Realmente se trata de una Sintaxis simplificada del Operador Ternario. Lo vamos a entender con el siguiente ejemplo.

Supongamos que nos han encargado programar una aplicación para iPhone que controlará el acceso a una montaña rusa en función de la altura de la persona que quiere montar en la atracción. Sabemos que la altura mínima para poder acceder es de 140cm. Hay un dispositivo que mide la altura de las personas que pasan, almacenando ese dato en la Variable altura. Este dispositivo sólo deja pasar a aquellas personas que tienen una altura igual o superior a 140cm. Hemos previsto que pueda fallar la comunicación entre el dispositivo y nuestro iPhone de forma que no nos envíe el dato de la altura de la persona que acaba de entrar en la Montaña Rusa, es decir, la Variable altura podría no tener valor, por lo que sería de Tipo Opcional. Cuando ocurra esta circunstancia de ausencia de valor de la Variable altura, Swift le asignará el valor nil y mediante un Operador Ternario le asiganaremos el valor por defecto de 140cm.

var altura : Int?

altura != nil ? altura! : 140

En este primer ejemplo el sensor de medida no ha enviado el valor a nuestro iPhone, por lo que nuestro programa asignará el valor por defecto 140.

Si ahora obtenemos el valor de la altura entonces ese será el dato que se almacenará en nuestra Variable.

var altura : Int?

altura = 175

altura != nil ? altura! : 140

Gracias al uso del Operador Nil-Coalescing podremos realizar todo lo anterior con una sintaxis simplificada:

var altura : Int?

altura ?? 140

var altura : Int?

altura = 175

altura ?? 140

La sintaxis de altura ?? 140 se interpreta de la siguiente manera: "Si la variable altura es nil entonces le asignaremos el valor por defecto 140."

La mejor forma de aprender a desarrollar aplicaciones iOS es mediante la práctica, por lo que proponemos un nuevo ejemplo:

Supongamos que vamos a programar una App con Swift para controlar el volumen de una Aplicación de reproducción de música. El usuario tendrá un control en la pantalla mediante el cual podrá indicar el volumen, en caso de que no indique ningún valor se asignará el valor del volumen que tenemos establecido por defecto.

let volumenPorDefecto = 5
var volumenAsignadoPorUsuario : Int?
var volumenDeReproduccion = volumenAsignadoPorUsuario ?? volumenPorDefecto

Con el código anterior, el Operador Nil-Coalescing detecta que el usuario no a asignado ningún volumen y por lo tanto tomaremos el valor por defecto.

En caso de que el usuario asigne algún valor al volumen, se tomará como volumen de reproducción, quedando nuestro Código Fuente de la siguiente forma:

let volumenPorDefecto = 5
var volumenAsignadoPorUsuario : Int?
volumenAsignadoPorUsuario = 7
var volumenDeReproduccion = volumenAsignadoPorUsuario ?? volumenPorDefecto

Ficheros Adjuntos

Más en esta Sección

  • Desencapsulamiento Implícito

  • Optional Binding

  • Forced Unwrapping

  • Introducción a los Opcionales en Swift