Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios swift语言中的null/nil_Ios_Swift - Fatal编程技术网

Ios swift语言中的null/nil

Ios swift语言中的null/nil,ios,swift,Ios,Swift,我们如何用swift编程语言定义以下内容: 空的 零 零 [NSNull null] 换句话说,这些客观c术语的swift等价物是什么。 此外,我还想知道对于非目标c类型,如结构和枚举,是否存在任何特定的用例。提前谢谢 关于等价物: NULL在Swift中没有等效项 nil在Swift中也称为nil Nil在Swift中没有等效项 [NSNull null]可以在Swift中以NSNull()的形式访问 注:这些是我根据阅读和游戏做出的猜测。欢迎指正 但是Swift中的nil/NULL处

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

  • 空的
  • [NSNull null]
换句话说,这些客观c术语的swift等价物是什么。 此外,我还想知道对于非目标c类型,如结构和枚举,是否存在任何特定的用例。提前谢谢

关于等价物:

  • NULL
    在Swift中没有等效项
  • nil
    在Swift中也称为
    nil
  • Nil
    在Swift中没有等效项
  • [NSNull null]
    可以在Swift中以NSNull()的形式访问
注:这些是我根据阅读和游戏做出的猜测。欢迎指正

但是Swift中的nil/NULL处理与Objective C非常不同。它看起来旨在加强安全性和谨慎性。仔细阅读。一般来说,变量不能为空,当您需要表示“没有值”时,您可以声明地这样做。

nil
表示“没有值”,但在其他意义上与Objective-C的
nil
完全不同

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

非可选变量不能被赋值
nil
,即使它们是类(即它们位于堆上)


因此,它显然不是一个
NULL
指针,也不类似于一个指针。它共享名称,因为它用于相同的语义原因。

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

  • NULL
    在Swift中没有等效项

  • nil
    在Swift中也称为nil

  • Nil
    在Swift中没有等效项

  • [NSNull null]
    可以通过Swift作为
    NSNull()


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

UnsafePointer<Int8>.null()
UnsafePointer.null()

Swift中Null的概念恢复到可选枚举。枚举的定义如下

enum Optional<T> {
  case Some(T)
  case None
}
enum可选{
案例(T)
无案例
}
这意味着Swift中不能有未初始化的变量/常量。。如果您尝试这样做,您将得到一个编译器错误,说明变量/常量不能未初始化。您需要将其包装在可选枚举中


这是您在Swift中可以找到的唯一空概念,标记的问题是关于“可能缺少值”,而我对这些值的不同类型/变体感兴趣。相关,但不重复。您会发现它们是同一个。您如何声明缺少要检查的值?like==无目标-c@JuanPabloBoero见下文我的回答Obj-C中的“零指针”表示“与普通C一起使用”。由于Swift与C库兼容,下面@Rien的答案是我所知道的关于
NULL
等价物的最佳答案。
if !(myDATA is NSNull) {
// optional is NOT NULL, neither NIL nor NSNull
} else {
// null
}