1、前面说过了强行解包是有风险的,所以我们引用了??来进行解包来规避风险,其实还可以通过判断来解包的
1-1、通过??来进行解包
func demo1() {
let oName: String? = "小明"
let oAge:Int? = nil//= 20
//如果想要输出:小明20
//使用if来判断oName,oAge是否有值
print((oName ?? "") + String((oAge ?? 0)))
}
1-2通过if判断来进行解包
func demo() {
let oName: String? = "小明"
let oAge:Int? = 20
//如果想要输出:小明20
//使用if来判断oName,oAge是否有值
if oName != nil && oAge != nil {
print(oName! + String(oAge!))
} else {
print("oName 或者 oAge 为 nil")
}
}
1-3通过if let 连用来解包
func demo2() {
let oName: String? = "小明"
let oAge:Int? = 20
//如果想要输出:小明20
if let name = oName,
let age = oAge {
//进入{}里面的name,age一定有值
print(name + String(age))//输出结果:小明20
} else {
print("oName 或者 oAge 为 nil")
}
}
小结:if let 连用语法,目的就是判断值。不是单纯的 if。if let 连用,判断对象的值是否为 nil,{}内一定有值,可以直接使用,不需要解包
2、if var连用
if var 连用,在{}可以对值进行修改
func demo3() {
let oName: String? = "小明"
let oAge:Int? = 20
//如果想要输出:小明20
if var name = oName,
let age = oAge {
//修改名字
name = "小红"
print(name + String(age))
//输出结果:小红20
} else {
print("name 或 age 为 nil")
}
}