用迅捷的语言表示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 }