1. 可选型的声明 ( 可选型的值可以是实值或者nil )
显示声明方法是在变量类型后面加上 ?(值可以是nil)
var name: String? = "jack"
隐式声明方法是在变量后面加上 !(具体使用时必须确定是有值得)
var name: String! = nil
name = "jack"
2. 可选型强制解包
强制解包在可选型后面加上!就可以
var name: String? = "jack"
"他的名字是:" + name!
强制解包值如果为nil就会出错
var name: String? = nil
"他的名字是:" + name!
3. if let 判断解包多个可选项不为nil
多个解包中间可以用","隔开,还可以用where来同时判断其他条件
解包完的值只能在{ } 中使用,在{ } 外面使用又变成可选型了
如果值是nil 则不可以解包
var errorMessge: String? = "信息"
var errorCode: String? =" 404 "
if let errorCode = errorCode , errorMessage where errorCode == "404" {
"两个值都不为nil"
}
4. Optional Chaining 和 Nil-Coalesce
//uppercaseString 是把字符串变为大写
var errorMessage:String? = "Hello"
//尝试解包 如果值是nil 尝试解包失败就不执行后面的方法
errorMessage?.uppercaseString
//强制解包 如果值是nil 强制解包会报错
errorMessage!.uppercaseString
Optional Chaining ( 可选型链条 XXX?.XXXX?.XXXXX )
返回值是nil
var errorMessage:String? = nil
if let errorMessage = errorMessage?.uppercaseString {
errorMessage
}
返回值是自定义的默认值
Nil-Coalesce (let 变量名 = 可选型 ?? "如果是nil给的默认值")
var errorMessage:String? = nil
let message = errorMessage ?? "默认值"