可选类型
在 swift 中可以使用 可选类型(Optional)来处理值不存在的情况,变量存在值时可以对其进行解析。
比如对数字进行类型转换:
1 | var numberStr = "10" |
当 numberStr 可以转换时,value 包含 Int 类型的值;当 numberStr 无法转换时,value 不包含值。
Int? 可以被赋值 nil,但是不能用于非可选的变量赋值,如果程序中变量或常量可能包含空值时,需要声明为对应类型的可选类型。
1 | var statusCode: Int? = 400 |
可以使用 if 和 ! 来处理可选类型:
1 | var number: String = "10" |
如果确定可选类型变量存在值,则可以使用 ! 解析可选类型的值,注意:使用 ! 解析一个不存在的值会报错。
可选绑定
还可以使用 可选绑定(Optional binding)来判断可选类型是否包含值,如果存在值则将值赋值给一个变量。
1 | var age: Int = 10 |
隐式解析可选类型
如果可以确定一个变量一定存在值,则可以将变量声明为隐式解析可选类型,避免每次取值时的判断。
1 | let message1: String? = "message content 1" |
但是如果隐式解析可选类型不存在值,也会和使用普通可选类型一样报错。可以把隐式解析可选类型当做一个可以自动解析的可选类型。
⚠️ 如果一个变量之后可能变成 nil 的话请不要使用隐式解析可选类型。如果你需要在变量的生命周期中判断是否是 nil 的话,请使用普通可选类型。
空合运算符
空合运算符 ?? 先对一个可选类型进行判断 result != nil,如果 result 的值不为 nil,则对可选类型 result 进行取值返回 result!,否则返回默认值,默认值与可选类型包含的值必须是同一类型。
1 | let defaultNum = 10 |