Avatar ·

Что такое null/nil в Swift и как с ним работать?

Всем привет! Изучаю Swift и столкнулся с концепцией null/nil. В других языках (например, Java, C#) я привык к null-ссылкам и NullPointerException. Но в Swift, как я понял, nil — это не указатель, а отсутствие значения для опциональных типов (Optional).

У меня есть простой пример: я пытаюсь получить имя пользователя из словаря, но если ключа нет — приложение падает.

let user: [String: Any] = ["name": "Alice"]
let name = user["age"] as! String // crash, если ключа нет
print(name)

Я пробовал использовать if let и guard let, но не до конца понимаю, как правильно обрабатывать nil в разных ситуациях. Например:

  • В чем разница между Optional и forced unwrapping?
  • Когда использовать ?? (nil-coalescing) вместо if let?
  • Может ли обычная переменная (не Optional) быть nil?
  • Как избежать крашей при работе с JSON и Codable?

Ожидаю получить четкое объяснение философии nil в Swift и best practices для безопасной работы с опционалами. Заранее спасибо!