Estructuras para optional chaining en Swift
Clase 24 de 27 • Curso de Programación Orientada a Objetos en Swift
Contenido del curso
Tipos de Propiedades
- 5

Propiedades Almacenadas en Swift: Uso y Ejemplos Prácticos
04:48 min - 6

Propiedades Lazy en Programación: Uso y Ventajas
07:16 min - 7

Propiedades Computadas en Swift: Uso y Ejemplos Prácticos
10:30 min - 8

Computed properties de solo lectura en Swift
05:14 min - 9

Observers en Swift: willSet y didSet
07:18 min - 10

Variables estáticas en clases, estructuras y enumerados
09:19 min
Métodos, subíndices y herencia
- 11

Métodos de instancia en Swift con self
07:35 min - 12

Métodos Mutantes en Estructuras y Enumerados en Swift
09:05 min - 13

Métodos de clase en Swift: static vs class
10:50 min - 14

Subíndices en Swift: Sintaxis y Aplicaciones Prácticas
09:01 min - 15

Manipulación de Matrices y Subíndices en Programación
12:27 min - 16

Herencia de Clases en Programación Orientada a Objetos
10:14 min - 17

Sobrescritura de Métodos y Propiedades en Clases Derivadas
12:11 min
Inicializadores o constructores
- 18

Inicializadores en Sweet: Creación y Uso Efectivo de Constructores
06:50 min - 19

Modificación de Constructores y Parámetros Opcionales en Swift
10:10 min - 20

Constructores Designados y de Conveniencia en Herencia de Clases
09:37 min - 21

Constructores y manejo de inicialización opcional en Swift
08:42 min - 22

Destructores en Programación: Liberación de Recursos Automática
07:12 min
Encadenamiento opcional
Conclusión
El optional chaining en Swift es una forma segura y eficaz de acceder a propiedades, métodos y subíndices cuando pueden ser nulos. Frente al forced unwrapping, reduce errores y es una técnica favorita entre desarrolladores. Si ahora te confunden signos y sintaxis, no pasa nada: con práctica se vuelve natural.
Modelo en Swift para practicar el optional chaining
Este modelo prepara el terreno para encadenar opcionales en propiedades, métodos y subíndices, sin preocuparnos por si existen o no. Se reestructuran cuatro clases: Person, Residence, Room y Address, pensando en un escenario de alquiler de habitaciones tipo Airbnb.
¿Cómo se definen person, residence, room y address?
A continuación, el diseño descrito, listo para practicar con arrays, propiedad computada y subscript con getter y setter.
class Person {
var residence: Residence?
}
class Residence {
var rooms: [Room] = []
var numberOfRooms: Int { return rooms.count }
subscript(i: Int) -> Room {
get { return rooms[i] }
set { rooms[i] = newValue }
}
}
class Room {
var name: String
init(name: String) { self.name = name }
}
class Address {
var buildingName: String?
var buildingNumber: String?
var street: String?
func buildingIdentifier() -> String? {
if let buildingNumber = buildingNumber, let street = street {
return "\(buildingNumber), \(street)" // número, calle
} else if buildingName != nil {
return buildingName
} else {
return nil
}
}
}
¿Qué hace cada parte del modelo?
- Person: define dónde vive una persona con residence opcional.
- Residence: gestiona rooms como array vacío por defecto.
- numberOfRooms: propiedad computada que devuelve rooms.count.
- Subscript de Residence: permite leer y asignar rooms[i] con getter y setter.
- Room: modela una habitación con name e init para crearla desde un nombre.
- Address: usa buildingName, buildingNumber y street como Strings opcionales.
- función buildingIdentifier(): combina número y calle en formato "número, calle"; si no, devuelve el nombre del edificio; en otro caso, nil.
Técnicas clave antes de encadenar opcionales
Dominar estas piezas simplifica el uso del optional chaining y evita errores comunes al trabajar con opcionales.
¿Qué patrones de Swift se aplican aquí?
- Manejo de opcionales: propiedades que pueden no existir y retornos opcionales.
- Desempaquetado seguro con if let: evita fallos y controla ausencia de datos.
- Propiedad computada: cálculo derivado de un array (rooms.count).
- Subscript con getter y setter: acceso directo y asignación a elementos del array.
- Inicializadores personalizados: creación clara de objetos como Room(name:).
- Diseño orientado a objetos: separación de responsabilidades entre Person, Residence, Room y Address.
Próximo paso con optional chaining
Con este modelo, podrás acceder de forma segura a propiedades, métodos y subíndices que podrían ser nil, y Swift lo manejará por ti. El siguiente paso es crear personas, asignarlas a habitaciones y trabajar con direcciones para ver el optional chaining aplicado de forma profesional.
¿Te quedó alguna duda o quieres ver un caso puntual de acceso encadenado? Deja tu comentario y lo revisamos juntos.