可选类型
Swift 的可选(Optional)类型,用于处理值缺失的情况。可选表示"那儿有一个值,并且它等于 x "或者"那儿没有值"。
Swift里,直接给变量赋值为nil是不可以的
var a = nil // 这样会报错
正确的做法是:
var a:Int? = nil // 一个Int类型的空值
var b: String? // 声明b,为String类型,可以为nil
b = nil
可选绑定
使用可选绑定(optionals binding)来判断可选绑定是否包含值,如果包含就把赋值给一个临时的变量或常量。可选绑定可以用在if和while语句中来对可选类型值进行判断,并把值赋值给一个常量或者变量。
let a:Int? = 10
if let value = a {
print("vlaue = \(value)")
}
// 输出:vlaue = 10
强制解析
!语法:
当你确定可选类型确实包含值之后,你可以在可选的名字后面加一个感叹号(!)来获取值。这个感叹号表示"我知道这个可选有值,请使用它。"这被称为可选值的强制解析(forced unwrapping)。
var myString:String?
myString = "Hello, Swift!"
if myString != nil {
// 强制解析
print( myString! )
}else{
print("myString 值为 nil")
}
执行结果为:
Hello, Swift!
隐式展开
隐式解析可选类型(implicitly unwrapping optionals)
当可选类型被第一次赋值之后就可以确定之后一直有值的时候,隐式解析可选类型非常有用。一个隐式可选类型其实就是一个普通的可选类型,但是可以被当作非可选类型来使用,并不需要每次都使用解析来获取值,下面的例子展示可选类型String? 和隐式可选类型String!之间的区别
let A:String? = "可选类型"
let B:string! = A//需要感叹号(!)来获取值
let A! = "隐式解析可选类型"
let B:String = A//不需要感叹号
可选链展开
参考:可选链展开