在快速语言中为null / nil

时间:2014-06-04 17:13:46

标签: ios swift

我们如何在swift编程语言中定义以下内容:

  • null
  • [NSNull null]

换句话说,这些客观c术语中的每一个都是迅速等同的。 此外,还想知道是否存在非结构c类型(如结构和枚举)的特定用例。提前致谢。

7 个答案:

答案 0 :(得分:113)

关于等价物:

  • NULL在Swift中没有等效内容。
  • nil在Swift中也称为nil
  • Nil在Swift
  • 中没有对应的内容
  • [NSNull null]可以在Swift中以NSNull()
  • 的形式访问

注意:这些是基于阅读和游戏的猜测。更正欢迎。

但Swift中的nil / NULL处理与Objective C非常不同。它看起来旨在强制执行安全和护理。阅读optionals in the manual。一般来说,一个变量根本不能为NULL,并且当你需要表示"缺少一个值时,#34;你是以声明的方式这样做的。

答案 1 :(得分:20)

如果需要在低级指针操作中使用NULL,请使用以下命令:

UnsafePointer<Int8>.null()

答案 2 :(得分:11)

nil表示&#34;没有价值&#34;但与Objective-C nil的其他意义完全不同。

只能分配给可选变量。它适用于文字和结构(即它适用于基于堆栈的项目,而不仅仅是基于堆的项目。)

非可选变量即使属于类(即它们存在于堆中),也无法分配nil

因此,它明确地不是NULL指针而与之类似。它共享名称,因为它旨在用于相同的语义原因。

答案 3 :(得分:5)

Swift中Null的概念恢复为Optional枚举。枚举定义如下

enum Optional<T> {
  case Some(T)
  case None
}

这意味着您不能在Swift中拥有未初始化的变量/常量。如果您尝试这样做,您将收到编译器错误,指出变量/常量不能未初始化。您需要将它包装在Optional enum ..

这是你在Swift中找到的唯一Null概念

答案 4 :(得分:4)

Swift的nil与Objective-C中的nil不同。
在Objective-C中,nil是指向不存在的对象的指针。在Swift中,nil不是指针 - 它缺少某种类型的值。任何类型的选项都可以设置为nil,而不仅仅是对象类型。

NULL在Swift中没有等效内容。

nil在Swift中也被称为nil

Nil在Swift中没有等效内容

[NSNull null]可以在Swift中以NSNull()

的形式访问

答案 5 :(得分:0)

我在一个有问题的场景中遇到了这个问题:设置包

所以有人不浪费他的时间(因为我失去了它!)

    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。而且,在我的情况下,应用崩溃

答案 6 :(得分:0)

if !(myDATA is NSNull) {
// optional is NOT NULL, neither NIL nor NSNull
} else {
// null
}