1.基本概念
可选项(optIonal)也叫可选类型,它允许把值设为nil,一般我们都在类型名称后面加?。
例子:
var str:String? = "可选项"
str = nil2.强制解包
如果从可选类型中取出被包装的内容,一般用感叹号!进行强制解包。
例子:
var str:String? = "可选项"
var str2:String = str!
3.判断可选项是否包含值
例子:
var str:String? = "可选项"
if str != nil {
print(str!)
}4.可选项绑定
例子:
if let number = Int("123") {
print(number)
}else {
print("转换失败")
}5.空合并运算符??
a??b ,a是可选项,b的存储类型和a相同,如果a为nil,则返回b,否则返回a。
例子:
let a: Int? = 1
let b: Int? = 2
if let c = a ?? b {
print(c)
}
if let c = a, let d = b {
print(c)
print(d)
}6.guard语句
当guard 语句为false,则执行大括号语句,true则跳过。
例子:
func test(abc:String?) {
guard let abcd = abc else {
return
}
print(abcd)
}7.多重可选项
我们可以使用lldb指令 frame variable -R 来查看可选项的区别
例子:
var num1: Int? = 10
var num2: Int?? = num1
var num3: Int?? = 10
(lldb) frame variable -R num1
(Swift.Optional<Swift.Int>) num1 = some {
some = {
_value = 10
}
}
(lldb) frame variable -R num2
(Swift.Optional<Swift.Optional<Swift.Int>>) num2 = some {
some = some {
some = {
_value = 10
}
}
}
frame variable -R num3
(Swift.Optional<Swift.Optional<Swift.Int>>) num3 = some {
some = some {
some = {
_value = 10
}
}
}
上一篇文章:swift从入门到精通04-枚举
下一篇文章:swift从入门到精通06-结构体和类