我们如何在swift编程语言中定义以下内容:
换句话说,这些客观c术语中的每一个都是迅速等同的。 此外,还想知道是否存在非结构c类型(如结构和枚举)的特定用例。提前致谢。
答案 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
}