<pre name="code" class="objc">//swift是严格的强类型语言
var errorMessage: String? = "adfa"
if let message = errorMessage {//尝试解包, 把他付给一个变量
message.uppercased()
}else{
"error"
}
errorMessage?.uppercased()//等价上面的if判断 ?对可选类型的errorMessage 进行解包 如果不为nil 就继续执行代码, 如果为nil 解包失败就直接终止代码,不会出现报错信息
errorMessage!.uppercased()//这个写法要和上面的有所区分, 从意义上来说他们两个完全不同, !表示 确定这个变量不会为空, 他仍然是个可选类型, 如果变量为空的话 这句话就会报错
var uppercaseErrorMessage = errorMessage? . uppercased()//此时 uppercaseErrorMessage 虽然没有声明为可选类型,但他确实是个可选类型, 因为errorMessage?有可能返回nil 后面的表达式返回的是个可选型 所以赋值给uppercase,他就是可选型
//nil
let message2 = errorMessage == nil ? "No error" : errorMessage!
//简洁强大
<pre name="code" class="objc">let message3 = errorMessage ?? "No error"
// 这里的 ?? 表示 message3 想取到 errorMessage 的 值 如果errorMessage 为nil 则 去 后面的值