類型后 + ? 為可選型 在可選后加 ! 為強制解包(強制解包是有風(fēng)險的 )應(yīng)先判斷不為空,如:
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"
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者