在Swift开发过程中,经常会用到可选类型。有时候使用可选类型还真麻烦。那怎么更好地使用可选类型,根据个人的工作经历总结了一点经验。
概念
可选类型。通俗地讲,变量被一个箱子包裹起来。我们平常的操作都是针对外表的箱子,不会操作到箱子里面的变量,并且这个箱子可能存在空的情况(即为nil)。当我们直接使用可选类型的时候将有可能出错,因为直接操作了外表的箱子,而不是实际变量。如下图所示:
那么如何解决这个问题呢? --根本的方法就是,打开箱子,针对里面的变量操作(即对变量进行解包)。
解包
解包,就是打开外面的箱子,取出里面实际数据并操作之。
在工作过程中总结了三种解包的方式。
方法一:可选类型绑定(Optional binding)
具体实例如下
if let n = name {
print("n != nil") //n就是非可选类型了
} else {
print("name为nil")
}
此实例中n就是解包之后的实际值,就可以直接操作n变量。
方法二:guard let else方式
具体实例如下
guard let uname = username else {
print("error")
return
}
if uname.isEmpty { //uname作为String(非可选类型)操作
print(" no Empty")
}
此实例中uname就是解包之后的实际值,就可以直接操作uname变量。
方法三:??操作符方式
let numbers:Int? = nil
let num = numbers ?? 0
if num == 10 {//num作为Int(非可选类型)操作
print("ok")
}
let username:String? =nil
let name = username ?? " "
if name.isEmpty {
//name作为String(非可选类型)操作
//username.isEmpty 是会编译失败的
print("\(name)")
}
此实例,本质是把可选类型通过??操作符转换成非可选类型,非可选类型是可以直接操作。
以上就是关于可选类型的总结。