swift 可選型的運用詳解。本站提示廣大學習愛好者:(swift 可選型的運用詳解)文章只能為提供參考,不一定能成為您想要的結果。以下是swift 可選型的運用詳解正文
一、根本用法
可選性是Swift提供的一個特殊類型,它為我們編寫順序提供便當的條件
swift是強類型言語,當我們需求運用一個變量,既可以為String,也可以為nil時,這時分就需求我們運用可選型。
// 運用特殊值作為“無”能夠發生歧義 //var errorCode = 404 //errorCode = 0 // 運用可選型 var errorCode:Int? = 404 print( errorCode ) errorCode = nil print( errorCode ) var color: UIColor? = nil // Int? 和 Int 不是一品種型 let imInt = 405 errorCode = imInt //imInt = errorCode // 必需顯示地聲明可選型的類型 //var imOptional = nil var imOptional: String? = nil
二、可選型解包運用
var errorCode:String? = "404" print( errorCode ) // 可選型不可以直接運用 //"The errorCode is" + errorCode // 強迫解包 "The errorCode is " + errorCode! // 強迫解包是風險的 errorCode = nil //"The errorCode is" + errorCode! // 判別不是nil if errorCode != nil{ "The errorCode is " + errorCode! } else{ "No error" } // if let 解包 if let unwrappedErrorCode = errorCode{ "The errorCode is " + unwrappedErrorCode } else{ "No error" } // 可以運用相反的變量名 if let errorCode = errorCode{ "The errorCode is " + errorCode } else{ "No error" } // 運用if-let同時解包多個變量 var errorMessage:String? = "Not found" if let errorCode = errorCode{ if let errorMessage = errorMessage{ "The errorCode is " + errorCode + "\nThe errorMessage is " + errorMessage } }
三、多層解包(**swift3.0有變化)
//多層解包(swift 2.0運用) if let errorCode = errorCode , errorMessage = errorMessage{ "The errorCode is " + errorCode + "\nThe errorMessage is " + errorMessage } //以上多層解包辦法在swift3.0中應寫為 if let errorCode = errorCode , let errorMessage = errorMessage{ "The errorCode is " + errorCode + "\nThe errorMessage is " + errorMessage } // where(swift 2.0運用) if let errorCode = errorCode , errorMessage = errorMessage where errorCode == "404"{ print("Page not found") } //在swift3.0中應寫為 // where if let errorCode = errorCode , let errorMessage = errorMessage , errorCode == "404"{ print("Page not found") }
四、Optional chaining的運用
可選型?這種寫法叫做Optional chaining
這種辦法可以停止嘗試解包,使代碼簡約
var errorMessage: String? = "Not Found" if let errorMessage = errorMessage{ errorMessage.uppercased() } //運用 Optional chaining errorMessage?.uppercased() var uppercaseErrorMessage = errorMessage?.uppercased() //uppercaseErrorMessage為可選型 if let errorMessage = errorMessage?.uppercased(){ errorMessage } // Optional chaining 也可以運用! let uppercaseErrorMessage2 = errorMessage!.uppercased() //此時 uppercaseErrorMessage2 為String類型。此時為強迫解包,容易呈現錯誤
五、Nil-Coalescing 的運用
// Nil-Coalescing var errorMessage: String? = nil let message: String if let errorMessage = errorMessage{ message = errorMessage } else{ message = "No error" } // 運用三目運算符 let message2 = errorMessage == nil ? "No error" : errorMessage! // 留意: 此時運用errorMessage需求強迫解包.以保證message2是一個String,而非String? // 三目運算符?:的本質就是一個if else // 運用 ?? let message3 = errorMessage ?? "No error" // 留意: 此時運用errorMessage不需求強迫解包. // ??符號曾經保證了訪問到errorMessage時, errorMessage不是nil // Swift將為我們自動解包, 保證message2永遠是一個String, 而不是String? //這種用法叫做 Nil-Coalescing
以上所述是給大家引見的swift 可選型的運用詳解,希望對大家有所協助,假如大家有任何疑問請給我留言,會及時回復大家的。在此也十分感激大家對網站的支持!