用迅捷的语言表示null / nil
我们如何用swift编程语言来定义以下内容:
- 空值
- 零
- 零
- [NSNull null]
换句话说,这些客观条款中的每一个的快速等价物是多less。 此外,还想知道是否存在针对结构和枚举等非客观types的特定用例。 提前致谢。
关于等价物:
-
NULL
在Swift中没有等价物。 - 在Swift中,
nil
也被称为nil
-
Nil
在Swift中没有等价物 -
[NSNull null]
可以作为NSNull()在Swift中访问
注意:这些是基于阅读和玩的猜测。 更正欢迎。
但Swift中的零/ NULL处理与Objective C非常不同。它看起来是为了强化安全性和关心。 阅读手册中的选项 。 一般来说,一个variables不能为NULL,当你需要表示“缺less一个值”时,你可以这样声明。
如果您需要在低级别指针操作中使用NULL,请使用以下命令:
UnsafePointer<Int8>.null()
nil
意味着“没有价值”,但是与Objective-C无关的其他意义上完全不同。
它只能分配给可选的variables。 它可以和文字和结构一起工作(即它可以和基于堆栈的项目一起工作,而不仅仅是基于堆的项目)。
即使它们是类,非可选variables也不能被指定nil
(即,它们生活在堆上)。
所以它明确地不是一个NULL
指针,而不是一个类似的。 它共享名称,因为它旨在用于相同的语义原因。
Swift中的Null概念恢复为Optional enum。 枚举是这样定义的
enum Optional<T> { case Some(T) case None }
这意味着你不能在Swift中有一个未初始化的variables/常量。如果你尝试这样做,你会得到一个编译器错误,说variables/常量不能被初始化。 您将需要将其包装在可选枚举中。
这是Swift中唯一的Null概念
Swift的nil
与Objective-C中的nil
不相同。
在Objective-C中, nil
是一个指向不存在对象的指针。 在Swift中, nil
不是一个指针 – 它是一个特定types的值的缺失。 任何types的选项可以设置nil
,而不仅仅是对象types。
NULL
在Swift中没有等价物。
在Swift中, nil
也被称为nil
Nil
在Swift中没有等价物
[NSNull null]
可以作为NSNull()
在Swift中访问
我在有问题的场景中遇到了这个问题:Settings Bundle
所以有人不浪费他的时间(因为我失去了它!)
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 }
在用户第一次打开App设置之前,系统返回nil。 而在我的情况下,应用程序崩溃 。
if !(myDATA is NSNull) { // optional is NOT NULL, neither NIL nor NSNull } else { // null }