Avatar ·

O que é null/nil em Swift e como trabalhar com ele?

Olá a todos! Estou estudando Swift e me deparei com o conceito de null/nil. Em outras linguagens (por exemplo, Java, C#), estou acostumado com referências null e NullPointerException. Mas em Swift, pelo que entendi, nil não é um ponteiro, mas sim a ausência de valor para tipos opcionais (Optional).

Tenho um exemplo simples: estou tentando obter o nome de um usuário de um dicionário, mas se a chave não existir, o aplicativo trava.

let user: [String: Any] = ["name": "Alice"]
let name = user["age"] as! String // crash, se a chave não existir
print(name)

Tentei usar if let e guard let, mas não entendo completamente como lidar com nil em diferentes situações. Por exemplo:

  • Qual é a diferença entre Optional e forced unwrapping?
  • Quando usar ?? (nil-coalescing) em vez de if let?
  • Uma variável comum (não Optional) pode ser nil?
  • Como evitar crashes ao trabalhar com JSON e Codable?

Espero obter uma explicação clara da filosofia do nil em Swift e das best practices para trabalhar com segurança.