可選類(lèi)型的介紹
- 注意:
- 可選類(lèi)型時(shí)swift中較理解的一個(gè)知識(shí)點(diǎn)
- 暫時(shí)先了解,多利用Xcode的提示來(lái)使用
- 隨著學(xué)習(xí)的深入,慢慢理解其中的原理和好處
- 概念:
- 在OC開(kāi)發(fā)中,如果一個(gè)變量暫停不使用,可以賦值為0(基本屬性類(lèi)型)或者賦值為空(對(duì)象類(lèi)型)
- 在swift開(kāi)發(fā)中,nil也是一個(gè)特殊的類(lèi)型.因?yàn)楹驼鎸?shí)的類(lèi)型不匹配是不能賦值的(swift是強(qiáng)類(lèi)型語(yǔ)言)
- 但是開(kāi)發(fā)中賦值nil,在所難免.因此推出了可選類(lèi)型
- 可選類(lèi)型的取值:
定義可選類(lèi)型
- 定義一個(gè)可選類(lèi)型有兩種寫(xiě)法
// 錯(cuò)誤寫(xiě)法
// let string : String = nil
// 正確寫(xiě)法:
// 注意:name的類(lèi)型是一個(gè)可選類(lèi)型,但是該可選類(lèi)型中可以存放字符串.
// 寫(xiě)法一:定義可選類(lèi)型
let name : Optional<String> = nil
// 寫(xiě)法二:定義可選類(lèi)型,語(yǔ)法糖(常用)
let name : String? = nil
可選類(lèi)型的使用
// 演練一:給可選類(lèi)型賦值
// 定義可選類(lèi)型
var string : Optional<String> = nil
// 給可選類(lèi)型賦值
// 錯(cuò)誤寫(xiě)法:因此該可選類(lèi)型中只能存放字符串
string = 123
// 正確寫(xiě)法:
string = "Hello world"
// 打印結(jié)果
print(string)
// 結(jié)果:Optional("Hello world")\n
// 因?yàn)榇蛴〕鰜?lái)的是可選類(lèi)型,所有會(huì)帶Optional
// 演練二:取出可選類(lèi)型的值
// 取出可選類(lèi)型的真實(shí)值(解包)
print(string!)
// 結(jié)果:Hello world\n
// 注意:如果可選類(lèi)型為nil,強(qiáng)制取出其中的值(解包),會(huì)出錯(cuò)
string = nil
print(string!) // 報(bào)錯(cuò)
// 正確寫(xiě)法:
if string != nil {
print(string!)
}
// 簡(jiǎn)單寫(xiě)法:為了讓在if語(yǔ)句中可以方便使用string
// 可選綁定
if let str = string {
print(str)
}
真實(shí)應(yīng)用場(chǎng)景
// 1.將字符串類(lèi)型轉(zhuǎn)成Int類(lèi)型
let str = "123"
let result : Int? = Int(str) // nil/Int
// 2.根據(jù)文件名稱(chēng),讀取路徑
let path : String? = Bundle.main.path(forResource: "123.plist", ofType: nil)
// 3.根據(jù)string,創(chuàng)建URL
let url = URL(string: "http://www.520it.com/小碼哥")
// 4.從字典中取內(nèi)容
let dict : [String : Any] = ["name" : "why", "age" : 18]
dict["name"]
dict["height"]
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者