Ответ
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.