Swift - Optional 的解包 、 Optional Chainling 和 Nil Coalesce

类型后 + ? 为可选型 在可选后加 ! 为强制解包(强制解包是有风险的 )应先判断不为空,如:
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"

你可能感兴趣的:(Swift - Optional 的解包 、 Optional Chainling 和 Nil Coalesce)