Как бы мы определили следующее в быстром языке программирования:
- null
- ноль
- Nil
- [NSNull null]
Как бы мы определили следующее в быстром языке программирования:
Относительно эквивалентов:
NULL
не имеет эквивалента в Swift.nil
также называется nil
в Swiftnil
не имеет эквивалента в Swift[NSNull null]
можно получить в Swift как NSNull()Примечание. Это мои догадки, основанные на чтении и игре. Исправления приветствуются.
Но обработка nil/NULL в Swift очень отличается от Objective C. Она выглядит направленной на обеспечение безопасности и заботы. Ознакомьтесь с опциями в руководстве. Вообще говоря, переменная не может быть NULL вообще, и когда вам нужно представить "отсутствие значения", вы делаете это декларативно.
Если вам нужно использовать NULL для операций указателя низкого уровня, используйте следующее:
UnsafePointer<Int8>.null()
nil
означает "нет значения", но совершенно различен в любом другом смысле от Objective-C nil
.
Он присваивается только дополнительным переменным. Он работает как с литералами, так и с структурами (т.е. Работает с элементами на основе стека, а не только с кучными элементами).
Необязательные переменные не могут быть назначены nil
, даже если они являются классами (т.е. они живут в куче).
Поэтому он явно не является указателем NULL
и не похож на один. Он разделяет это имя, потому что он предназначен для использования по той же семантической причине.
Концепция Null in Swift возобновляется до необязательного перечисления. Перечисление определяется следующим образом:
enum Optional<T> {
case Some(T)
case None
}
Это означает, что вы не можете иметь неинициализированную переменную/константу в Swift. Если вы попытаетесь это сделать, вы получите сообщение об ошибке компилятора, указывающее, что переменная/константа не может быть неинициализирована. Вам нужно будет обернуть его в необязательное перечисление..
Это единственная концепция Null, которую вы найдете в Swift
Swifts nil
не совпадает с nil
в Objective-C.
В Objective-C, nil
является указателем на несуществующий объект. В Swift nil
не является указателем - это отсутствие значения определенного типа. Опция любого типа может быть установлена на nil
, а не только на типы объектов.
NULL
не имеет эквивалента в Swift.
nil
также называется nil в Swift
nil
не имеет эквивалента в Swift
[NSNull null]
можно получить в Swift как NSNull()
У меня была эта проблема в проблемном сценарии: Пакет настроек
Чтобы кто-то не тратил впустую свое время (как я его потерял!)
let userDefaults = UserDefaults.standard
var settingsValue = userDefaults.string(forKey: "user_preference")
if settingsValue == nil {
settingsValue = "1"
}
if (settingsValue?.isEqual("1"))! {
//Do something
} else {
//Do something
}
Пока пользователь не откроет настройки приложения в первый раз, система вернет нуль. И в моем случае приложение аварийно завершает работу.
if !(myDATA is NSNull) {
// optional is NOT NULL, neither NIL nor NSNull
} else {
// null
}