Aprende a Programar Apps para iPhone con  Swift, SwiftUI y UIKit - lafactoriaapple

Forced Unwrapping

Ya sabemos qué es un Opcional en Swift, así como su sintaxis. Ahora vamos a aprender a acceder a sus valores en caso de que existan.

Veamos el caso de un Opcional que tenga asignado un valor

var edad : Int?
edad = 25    
print(edad)

En este caso, la Variable edad toma el valor Optional(25) y además Xcode nos muestra una advertencia indicando que tenemos que desencapsular ese valor.

Si pulsamos sobre Fix (reparar), Xcode hará los cambios correspondientes en el código para que su sintaxis sea correcta, obteniendo lo siguiente:

Se ha añadido una exclamación ! junto al nombre de la variable edad a la que intentamos acceder para mostrarla en la Consola. Se ha hecho un Forced Unwrapping para acceder al valor de la Variable Opcional edad.

Si tenemos la seguridad de que una Variable Opcional tiene siempre valor entonces podremos acceder al mismo haciendo un Forced Unwrapping añadiendo una exclamación ! al nombre de la variable.

Si se hace un Forced Unwrapping a una Variable Opcional que no tiene valor asignado se producirá un error en tiempo de ejecución de nuestra Aplicación. Podemos utilizar un Condicional para asegurarnos que la Variable Opcional tiene valor asignado y poder hacer el Forced Unwrapping de manera segura.

var edad : Int?
edad = 25

if edad != nil {
    let muestroEdad = edad!
    print(muestroEdad)
}

Con la Función Condicional de este ejemplo nos aseguramos que la Variable Opcional no es nula nil, es decir, tiene valor asignado y por lo tanto podemos hacer el Forced Unwrapping.

Recuerda que al hacer un Forced Unwrapping estamos accediendo al valor almacenado en la Variable

Veamos que pasa si intentamos hacer un Forced Unwrapping en el caso de una Variable que no sea de Tipo Opcional.

var edad : Int
edad = 25
print(edad!)

El Forced Unwrapping sólo se puede hacer para Variables de Tipo Opcional.

Ficheros Adjuntos

Más en esta Sección

  • Operador Nil-Coalescing

  • Desencapsulamiento Implícito

  • Optional Binding

  • Introducción a los Opcionales en Swift