В чем разница между nil и null в контексте iOS-разработки?

«В чем разница между nil и null в контексте iOS-разработки?» — вопрос из категории Swift Core, который задают на 10% собеседований IOS Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

nil и null оба обозначают отсутствие значения, но используются в разных экосистемах:

  • nil — это ключевое слово в Swift и Objective-C, обозначающее отсутствие значения у опционального типа.
  • null — это литерал, используемый в других языках (Java, JavaScript, SQL) и форматах данных (JSON). В Swift коде null не существует.

Ключевое отличие: nil — это языковая конструкция Swift, а null — это значение, которое может прийти извне (например, из JSON).

Пример:

// Swift: используем nil
var optionalString: String? = nil

// При работе с JSON может прийти null
let json = "{"name": null}".data(using: .utf8)!
let dict = try JSONSerialization.jsonObject(with: json) as! [String: Any?]
print(dict["name"] as Any?) // Выведет: nil (но в JSON было null)

Практическое правило: В Swift коде всегда используйте nil. Значение null из JSON автоматически конвертируется в nil при декодировании через Codable или JSONSerialization.