Swift - Opcionales

Swift 4 también presenta Optionalstype, que maneja la ausencia de un valor. Los opcionales dicen "hay un valor y es igual a x" o "no hay ningún valor".

Un Opcional es un tipo en sí mismo, en realidad una de las nuevas enumeraciones superpoderosas de Swift 4. Tiene dos valores posibles,None y Some(T), dónde T es un valor asociado del tipo de datos correcto disponible en Swift 4.

Aquí hay una declaración Integer opcional:

var perhapsInt: Int?

Aquí hay una declaración de cadena opcional:

var perhapsStr: String?

La declaración anterior es equivalente a inicializarla explícitamente a nil lo que significa que no tiene valor -

var perhapsStr: String? = nil

Tomemos el siguiente ejemplo para comprender cómo funcionan las opciones en Swift 4:

var myString:String? = nil

if myString != nil {
   print(myString)
} else {
   print("myString has nil value")
}

Cuando ejecutamos el programa anterior usando el patio de recreo, obtenemos el siguiente resultado:

myString has nil value

Los opcionales son similares a usar nil con punteros en Objective-C, pero funcionan para cualquier tipo, no solo para clases.

Desenvolver forzado

Si definiste una variable como optional, luego para obtener el valor de esta variable, tendrá que unwrapeso. Esto solo significa poner un signo de exclamación al final de la variable.

Tomemos un ejemplo simple:

var myString:String?

myString = "Hello, Swift 4!"

if myString != nil {
   print(myString)
} else {
   print("myString has nil value")
}

Cuando ejecutamos el programa anterior usando el patio de recreo, obtenemos el siguiente resultado:

Optional("Hello, Swift 4!")

Ahora apliquemos el desenvolvimiento para obtener el valor correcto de la variable:

var myString:String?

myString = "Hello, Swift 4!"

if myString != nil {
   print( myString! )
} else {
   print("myString has nil value")
}

Cuando ejecutamos el programa anterior usando playground, obtenemos el siguiente resultado.

Hello, Swift 4!

Desenvasado automático

Puede declarar variables opcionales utilizando un signo de exclamación en lugar de un signo de interrogación. Estas variables opcionales se desenvolverán automáticamente y no es necesario utilizar ningún otro signo de exclamación al final de la variable para obtener el valor asignado. Tomemos un ejemplo simple:

var myString:String!
myString = "Hello, Swift 4!"

if myString != nil {
   print(myString)
} else {
   print("myString has nil value")
}

Cuando ejecutamos el programa anterior usando el patio de recreo, obtenemos el siguiente resultado:

Hello, Swift 4!

Encuadernación opcional

Utilice el enlace opcional para averiguar si un opcional contiene un valor y, de ser así, para que ese valor esté disponible como una constante o variable temporal.

Un enlace opcional para el if declaración es la siguiente:

if let constantName = someOptional {
   statements
}

Tomemos un ejemplo simple para comprender el uso del enlace opcional:

var myString:String?
myString = "Hello, Swift 4!"

if let yourString = myString {
   print("Your string has - \(yourString)")
} else {
   print("Your string does not have a value")
}

Cuando ejecutamos el programa anterior usando el patio de recreo, obtenemos el siguiente resultado:

Your string has - Hello, Swift 4!