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"
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容