类型后 + ? 为可选型 在可选后加 ! 为强制解包(强制解包是有风险的 )应先判断不为空,如:
var errorCode: String? = "404"
print(errorCode as Any)
"The errorCode is" + errorCode!
if errorCode != nil {
"The errorCode is" + errorCode!
}else{
"asdf";
}
高级解包方法 if ... let (var) 解包
var errorMessage : String? = "Not fount";
if let errorCode = errorCode,let errorMessage = errorMessage {
"The errorCode is" + errorCode + "\nThe errorMessage is " + errorMessage
}
if 的一些其他功能在这里也适用
if let errorCode = errorCode ,
let errorMessage = errorMessage, errorCode == "404" ,errorMessage == "Not fount"{
"The errorCode is" + errorCode + "\nThe errorMessage is " + errorMessage
}
Optional Chaining
if let errorMessage = errorMessage {
errorMessage.uppercased()
}
/*
* 和 上边的if let表达式的效果是一样的
*/
errorMessage?.uppercased()
/*
* 也可以直接对表达式解包
*/
var uppercasedErrorMessage = errorMessage?.uppercased()
if var uppercasedErrorMessage = errorMessage?.uppercased(){
uppercasedErrorMessage
}
Nil Coalesce
// 1. 低端写法
let message1 : String
if let errormessagePlus = errorMessage {
message1 = errormessagePlus
}
// 2.三木运算写法
let message2 = errorMessagePlus == nil ? "No error" : errorMessagePlus
// 3.swift 高端写法
let message3 = errorMessagePlus ?? "No error"