Avatar ·

¿Qué es null/nil en Swift y cómo trabajar con él?

¡Hola a todos! Estoy aprendiendo Swift y me encontré con el concepto de null/nil. En otros lenguajes (por ejemplo, Java, C#) estoy acostumbrado a null references y NullPointerException. Pero en Swift, según entendí, nil no es un puntero, sino la ausencia de valor para tipos opcionales (Optional).

Tengo un ejemplo simple: intento obtener el nombre de usuario de un diccionario, pero si la clave no existe, la aplicación se cae.

let user: [String: Any] = ["name": "Alice"]
let name = user["age"] as! String // crash si la clave no existe
print(name)

Probé usar if let y guard let, pero no entiendo completamente cómo manejar nil correctamente en diferentes situaciones. Por ejemplo:

  • ¿Cuál es la diferencia entre Optional y forced unwrapping?
  • ¿Cuándo usar ?? (nil-coalescing) en lugar de if let?
  • ¿Puede una variable normal (no Optional) ser nil?
  • ¿Cómo evitar crashes al trabajar con JSON y Codable?

Espero obtener una explicación clara de la filosofía de nil en Swift y las mejores prácticas para trabajar de forma segura.