Opcionales
Opcionales
Opcionales es una lección gratuita de Swift Academy en CoddyKit. Esta es la lección 1 de 1. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Swift Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Swift Academy incluye 1 lecciones en total.
Introducción
Hola:
Se utiliza para expresar que una variable opcional puede no tener ningún valor.
Si una variable de tipo opcional tiene un valor, se desenvuelve y se utiliza. De lo contrario, no tiene ningún valor.
Uso de opcionales para muchos tipos en Swift
Puede compararse con el puntero nil de Obj-C. Sin embargo, el puntero nil solo es válido para tipos de objeto.
Los opcionales en Swift se utilizan no solo para tipos de objeto, sino también para Struct, enum o tipos simples.
var optionalVar: String?
// optionalVar is automatically set to nil]
/*
Since we define it as optional without
assigning a value, the variable
automatically takes the value of nil.
*/El nil de Swift y el nil de Obj-C no son iguales
El nil de Swift y el nil de Obj-C no son iguales.
Un puntero nil en Obj-C indica la ausencia del objeto. En Swift no es un puntero nil. El nil en Swift indica la ausencia de datos y es compatible con otros tipos, no solo con el tipo de objeto.
Desenvoltura forzada
Las variables que definimos como opcionales pueden utilizarse mediante el método de desenvoltura forzada.
Con el operador de exclamación, se puede forzar el desempaquetado, pero, por lo general, no se recomienda utilizarlo.
Si los datos referenciados no están disponibles al realizar una desenvoltura forzada, se produce un error en tiempo de ejecución.
let convertedNumber : Int? = 123
if convertedNumber != nil {
print("convertedNumber has an integer value of \(convertedNumber!).")
}
// Prints "convertedNumber has an integer value of 123."Acceder a un opcional con enlace opcional
Acceder a un opcional con enlace opcional
Con el bloque if let, podemos acceder al valor de la variable opcional asignándolo a una constante o variable.
Utilizar este método en lugar de la desenvoltura forzada es más elegante.
var possibleNumber : String? = "10"
if let actualNumber = possibleNumber {
print(actualNumber)
}Ejemplo
if let firstNumber = Int("4"), let secondNumber = Int("42"),
firstNumber < secondNumber && secondNumber < 100 {
print("\(firstNumber) < \(secondNumber) < 100")
}
// Prints "4 < 42 < 100"
/*
If at least one of them is false,
it will not be entered in the if blog.
*/
Opcionales desenvueltos implícitamente
Opcionales desenvueltos implícitamente
En algunos casos, el valor opcional se asigna en la primera etapa y, en las siguientes, definitivamente no es nil.
En esos casos, en lugar del opcional (?) y al expresarlo con el operador (!), se indica que este opcional definitivamente no es nil.
Esta forma de definición se denomina «opcionales desenvueltos implícitamente».
Desenvuelto implícitamente
Desenvuelto implícitamente
El área donde más se utiliza es la fase de inicialización de una clase.
A diferencia de los opcionales tradicionales, no necesitamos desenvolver las variables que se expresan implícitamente como desenvueltas.
let possibleString: String? = "An optional string."
// requires an exclamation mark
let forcedString: String = possibleString!
let assumedString: String! = "An implicitly unwrapped optional string."
// no need for an exclamation mark
let implicitString: String = assumedString Ejemplo
Si asignamos nil a variables de este tipo, se producen errores en tiempo de ejecución.
Veamos un ejemplo
/*
We can use it during optional binding or we can check for nil.
So we use implicitly unwrapped optional
in the same way we use classic optional.
*/
var assumedString: String! = nil
if let definiteString = assumedString {
print(definiteString)
}
// Prints "An implicitly unwrapped optional string."Advertencia
Si existe la posibilidad de que una variable sea nil, no se debe utilizar un opcional desenvuelto implícitamente.
Operador de coalescencia de Nil
Operador de coalescencia de Nil
Facilita desenvolver tipos opcionales.
Veámoslo con un ejemplo.
let defaultColorName = "red"
// defaults to nil
var userDefinedColorName: String?
var colorNameToUse = userDefinedColorName ?? defaultColorName
/*
userDefinedColorName is nil,
so colorNameToUse is set to the default of "red"
*/
// a != nil ? a! : b
/*
We can think of it as a shortcut to the above expression.
A checks if a is nil, if a is not nil, it unwrap and eturn,
otherwise it returns the default value, ie b.
*/
Enhorabuena
Enhorabuena 🎉
El concepto de los opcionales es una de las características más importantes de Swift. Al utilizar opcionales, nos libramos de las comprobaciones de Nil, escribimos un código más elegante y hacemos que nuestras aplicaciones sean más seguras.
Nos vemos en la próxima lección 🥳

Preguntas frecuentes
¿La lección «Opcionales» es gratis?
Sí — el texto completo de «Opcionales» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Swift Academy, actualiza a CoddyKit PRO. El curso de Swift Academy incluye 1 lecciones en total.
¿Qué aprenderé en «Opcionales»?
Opcionales Practicas Swift Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Swift Academy?
No se requiere experiencia previa. Swift Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 1.
¿Cuánto tiempo toma la lección «Opcionales»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Swift Academy?
Sí. Cada lección de Swift Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.