一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專(zhuān)注于服務(wù)器技術(shù)及軟件下載分享
分類(lèi)導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語(yǔ)言|JavaScript|易語(yǔ)言|vb.net|

服務(wù)器之家 - 編程語(yǔ)言 - Swift - swift 可選型的使用詳解

swift 可選型的使用詳解

2020-12-30 14:25追到夢(mèng)的魔術(shù)師 Swift

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

 一、基本用法

可選性是Swift提供的一個(gè)特殊類(lèi)型,它為我們編寫(xiě)程序提供便利的條件

swift是強(qiáng)類(lèi)型語(yǔ)言,當(dāng)我們需要使用一個(gè)變量,既可以為String,也可以為nil時(shí),這時(shí)候就需要我們使用可選型。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// 使用特殊值作為“無(wú)”可能產(chǎn)生歧義
//var errorCode = 404
//errorCode = 0
// 使用可選型
var errorCode:Int? = 404
print( errorCode )
errorCode = nil
print( errorCode )
var color: UIColor? = nil
// Int? 和 Int 不是一種類(lèi)型
let imInt = 405
errorCode = imInt
//imInt = errorCode
// 必須顯示地聲明可選型的類(lèi)型
//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
// 強(qiáng)制解包
"The errorCode is " + errorCode!
// 強(qiáng)制解包是危險(xiǎn)的
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同時(shí)解包多個(gè)變量
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中應(yīng)寫(xiě)為
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中應(yīng)寫(xiě)為
// where
if let errorCode = errorCode , let errorMessage = errorMessage , errorCode == "404"{
print("Page not found")
}

四、Optional chaining的使用

可選型?這種寫(xiě)法叫做Optional chaining

這種方法可以進(jìn)行嘗試解包,使代碼簡(jiǎn)潔

?
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()
//此時(shí) uppercaseErrorMessage2 為String類(lèi)型。此時(shí)為強(qiáng)制解包,容易出現(xiàn)錯(cuò)誤

五、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"
}
// 使用三目運(yùn)算符
let message2 = errorMessage == nil ? "No error" : errorMessage!
// 注意: 此時(shí)使用errorMessage需要強(qiáng)制解包.以保證message2是一個(gè)String,而非String?
// 三目運(yùn)算符?:的實(shí)質(zhì)就是一個(gè)if else
// 使用 ??
let message3 = errorMessage ?? "No error"
// 注意: 此時(shí)使用errorMessage不需要強(qiáng)制解包.
// ??符號(hào)已經(jīng)保證了訪(fǎng)問(wèn)到errorMessage時(shí), errorMessage不是nil
// Swift將為我們自動(dòng)解包, 保證message2永遠(yuǎn)是一個(gè)String, 而不是String?
//這種用法叫做 Nil-Coalescing

以上所述是小編給大家介紹的swift 可選型的使用詳解,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)服務(wù)器之家網(wǎng)站的支持!

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

延伸 · 閱讀

精彩推薦
  • SwiftSwift使用CollectionView實(shí)現(xiàn)廣告欄滑動(dòng)效果

    Swift使用CollectionView實(shí)現(xiàn)廣告欄滑動(dòng)效果

    這篇文章主要為大家詳細(xì)介紹了Swift使用CollectionView實(shí)現(xiàn)廣告欄滑動(dòng)效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下...

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

    swift where與匹配模式的實(shí)例詳解

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

    追到夢(mèng)的魔術(shù)師14382021-01-06
  • SwiftSwift教程之基礎(chǔ)數(shù)據(jù)類(lèi)型詳解

    Swift教程之基礎(chǔ)數(shù)據(jù)類(lèi)型詳解

    這篇文章主要介紹了Swift教程之基礎(chǔ)數(shù)據(jù)類(lèi)型詳解,本文詳細(xì)講解了Swift中的基本數(shù)據(jù)類(lèi)型和基本語(yǔ)法,例如常量和變量、注釋、分號(hào)、整數(shù)、數(shù)值類(lèi)型轉(zhuǎn)換等...

    Swift教程網(wǎng)5162020-12-18
  • SwiftSwift能代替Objective-C嗎?

    Swift能代替Objective-C嗎?

    這是我在網(wǎng)上上看到的答案,復(fù)制粘貼過(guò)來(lái)和大家分享一下,因?yàn)槲液秃芏嗳艘粯雍荜P(guān)心Swift的出現(xiàn)對(duì)Mac開(kāi)發(fā)的影響和對(duì)Objective-C的影響。...

    Swift教程網(wǎng)4412020-12-16
  • SwiftSwift實(shí)現(xiàn)多個(gè)TableView側(cè)滑與切換效果

    Swift實(shí)現(xiàn)多個(gè)TableView側(cè)滑與切換效果

    這篇文章主要為大家詳細(xì)介紹了Swift實(shí)現(xiàn)多個(gè)TableView側(cè)滑與切換效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下...

    乞力馬扎羅的雪雪5822021-01-08
  • SwiftSwift的74個(gè)常用內(nèi)置函數(shù)介紹

    Swift的74個(gè)常用內(nèi)置函數(shù)介紹

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

    Swift教程網(wǎng)5802020-12-19
  • SwiftSwift中轉(zhuǎn)義閉包示例詳解

    Swift中轉(zhuǎn)義閉包示例詳解

    在Swift 中的閉包類(lèi)似于結(jié)構(gòu)塊,并可以在任何地方調(diào)用,下面這篇文章主要給大家介紹了關(guān)于Swift中轉(zhuǎn)義閉包的相關(guān)資料,需要的朋友可以參考下...

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

    mac git xcrun error active developer path 錯(cuò)誤

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

    Swift教程網(wǎng)2232020-12-16
主站蜘蛛池模板: 污污的动态图合集 | 久久强奷乱码老熟女 | 天天色一色 | 2022国产麻豆剧传媒剧情 | 亚洲网站在线播放 | 久久精品观看 | 蜜桃成熟3在线观看 | 我被男人下药添得好爽 | 午夜爽喷水无码成人18禁三级 | 成人在线一区二区 | 校花被拖到野外伦小说 | 秋霞宅宅236理论片 秋霞一级黄色片 | 无码乱人伦一区二区亚洲 | 免费370理论片中文字幕 | 国产裸舞在线一区二区 | 国产66 | a级片在线播放 | 欧美在线观看网址 | 亚洲xxxxxhd奶水女人 | 欧美贵妇videos办公室360 | 国产爽视频| 欧美整片完整片视频在线 | 日韩在线视频一区二区三区 | 99九九精品视频 | 亚洲色图网址 | 国产一级视频久久 | 免费的强动漫人物的 | 91精品综合久久久久久五月天 | 亚洲波多野结衣日韩在线 | 美日韩一区二区三区 | 特级老女人淫片高清视频 | 国产精品久久久久jk制服 | 亚洲嫩模吧粉嫩粉嫩冒白浆 | 午夜AV国产欧美亚洲高清在线 | 国产高清免费在线 | 99热久久这里只精品国产www | 男同gay玩奴男同玩奴 | 亚洲国产成人久久77 | 欧美黑人成人免费全部 | 国产毛片在线高清视频 | 香蕉视频在线观看网站 |