程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 更多關於編程 >> swift 可選型的運用詳解

swift 可選型的運用詳解

編輯:更多關於編程

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 可選型的運用詳解,希望對大家有所協助,假如大家有任何疑問請給我留言,會及時回復大家的。在此也十分感激大家對網站的支持!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved