激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Swift - swift 可選型的使用詳解

swift 可選型的使用詳解

2020-12-30 14:25追到夢的魔術師 Swift

可選性是Swift提供的一個特殊類型,它為我們編寫程序提供便利的條件。這篇文章主要介紹了swift 可選型的使用詳解,非常不錯具有參考借鑒價值,需要的朋友可以參考下

 一、基本用法

可選性是Swift提供的一個特殊類型,它為我們編寫程序提供便利的條件

swift是強類型語言,當我們需要使用一個變量,既可以為String,也可以為nil時,這時候就需要我們使用可選型。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// 使用特殊值作為“無”可能產生歧義
//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

二、可選型解包使用

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
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有變化)

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//多層解包(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

這種方法可以進行嘗試解包,使代碼簡潔

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
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 的使用

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// 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 可選型的使用詳解,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對服務器之家網站的支持!

原文鏈接:http://blog.csdn.net/u012903898/article/details/52917282

延伸 · 閱讀

精彩推薦
  • SwiftSwift使用CollectionView實現廣告欄滑動效果

    Swift使用CollectionView實現廣告欄滑動效果

    這篇文章主要為大家詳細介紹了Swift使用CollectionView實現廣告欄滑動效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    Stevin的技術博客12372021-01-13
  • Swiftswift where與匹配模式的實例詳解

    swift where與匹配模式的實例詳解

    這篇文章主要介紹了swift where與匹配模式的實例詳解的相關資料,這里附有簡單的示例代碼,講的比較清楚,需要的朋友可以參考下...

    追到夢的魔術師14382021-01-06
  • SwiftSwift教程之基礎數據類型詳解

    Swift教程之基礎數據類型詳解

    這篇文章主要介紹了Swift教程之基礎數據類型詳解,本文詳細講解了Swift中的基本數據類型和基本語法,例如常量和變量、注釋、分號、整數、數值類型轉換等...

    Swift教程網5162020-12-18
  • SwiftSwift能代替Objective-C嗎?

    Swift能代替Objective-C嗎?

    這是我在網上上看到的答案,復制粘貼過來和大家分享一下,因為我和很多人一樣很關心Swift的出現對Mac開發的影響和對Objective-C的影響。...

    Swift教程網4412020-12-16
  • SwiftSwift實現多個TableView側滑與切換效果

    Swift實現多個TableView側滑與切換效果

    這篇文章主要為大家詳細介紹了Swift實現多個TableView側滑與切換效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    乞力馬扎羅的雪雪5822021-01-08
  • SwiftSwift的74個常用內置函數介紹

    Swift的74個常用內置函數介紹

    這篇文章主要介紹了Swift的74個常用內置函數介紹,這篇文章列舉出了所有的Swift庫函數,內置函數是指無需引入任何模塊即可以直接使用的函數,需要的朋友可...

    Swift教程網5802020-12-19
  • SwiftSwift中轉義閉包示例詳解

    Swift中轉義閉包示例詳解

    在Swift 中的閉包類似于結構塊,并可以在任何地方調用,下面這篇文章主要給大家介紹了關于Swift中轉義閉包的相關資料,需要的朋友可以參考下...

    小小小_小朋友11412021-12-26
  • Swiftmac git xcrun error active developer path 錯誤

    mac git xcrun error active developer path 錯誤

    本文主要是講訴了如何解決在mac下使用git;xcode4.6的環境時,出現了錯誤(mac git xcrun error active developer path)的解決辦法,希望對大家有所幫助...

    Swift教程網2232020-12-16
主站蜘蛛池模板: 久久久久亚洲精品 | 国产一区二区三区精品在线观看 | 啊哈不要啊 | 欧美一级美国一级 | 91九色福利 | 亚洲免费永久 | 综合精品一区 | 五月天堂婷婷 | 日本aaaa片毛片免费观看视频 | 99久在线视频 | 色七七网站 | 成年人高清视频在线观看 | 国产精品免费一区二区三区在线观看 | 欧美特黄a | 日本综合久久 | 久久久综合久久久 | 久久99精品久久久久久秒播蜜臀 | 欧美三级一级 | 欧美aaaaaaaa| 亚洲欧美日韩精品久久 | 久久精品视频网址 | 玩偶姐姐 在线观看 | 超碰一区 | 91 在线视频观看 | 国产精品欧美日韩一区二区 | 久久精品久 | 国产亚洲精品久久久久久久软件 | 亚洲精品永久视频 | 欧美日本91精品久久久久 | 国产精品美女久久久免费 | av电影在线网站 | 91精品最新国内在线播放 | 欧美高清视频一区 | 特一级黄色毛片 | 久久成人国产精品 | 欧美一区公司 | 美女视频黄视大全视频免费网址 | 日韩欧美视频一区二区三区 | 免费观看黄色一级视频 | 久久性生活免费视频 | 免费观看视频91 |