以下均为个人总结方便理解,不代表官方
一、定义
Objective-C中的nil:表示缺少一个合法的对象,是指向不存在对象的指针,对结构体、枚举等类型不起作用(会返回NSNotFound)
Swift中的nil:表示任意类型的值缺失,是一个确定的值,要么是该类型的一个值要么什么都没有(即为nil)
二、申明
比如声明一个Int类型的
代表申明可选Int类型的常量,初始值为1,Int?表示可选的Int类型,是可以为nil的,但是如果不加,则不可以赋值为nil(和OC中不同,可以赋值为0,但是不可以为nil)
var num: Int? = 1;
三、用法
// let defaultAddress: String = nil // 错误用法
let defaultAddress: String? = nil // 正确用法
if let address = defaultAddress { // 如果defaultAddress有值或类型转换成功,则将值赋值给address直接使用
print("您的地址是\(address)") // 使用address代替defaultAddress,且不需要加!强制解析
} else {
print("对不起,您不存在地址信息")
}
四、空白运算符
a ?? b,判断a是否为nil,若a不为nil,则对a解封,否则返回b的值
比如 var a: Int?
a ?? 0,因为a为nil,这a赋值0
比如 var a: Int ? = 1
a ?? 2, 因为a不为nil,则a为1