Swift--可選類型的簡單介紹以及常見使用場景

OC開發(fā)中,如果一個變量暫時不使用,可以賦值為0(基本屬性類型)或者賦值為空(對象類型)
swift開發(fā)中,nil也是一個特殊的類型.因為和真實的類型不匹配是不能賦值的(swift是強類型語言),但是開發(fā)中賦值nil,在所難免.因此推出了可選類型


定義可選類型

// 注意:name的類型是一個可選類型,但是該可選類型中可以存放字符串.
// 寫法一:定義可選類型
let name : Optional<String> = nil

// 寫法二:定義可選類型,語法糖(常用)
let name : String? = nil

可選綁定

// 可選綁定(固定格式) :系統(tǒng)幫我們做了兩件事情
// 1> 判斷后面的name是否有值, 如果沒有值,則直接跳過{}
// 2> 如果name有值,那么系統(tǒng)會自動對可選類型進(jìn)行解包, 并且將解包后的結(jié)果賦值給前面的name
if let name = name {
    print(name)
}

可選鏈

// ?.就是可選鏈: 
// 系統(tǒng)會自動判斷該可選類型是否有值,如果有值,則解包, 如果沒有值, 則賦值為nil。
// 注意: 可選鏈條獲取的值,一定是一個可選類型
if let price = p.dog?.toy?.price { // Double/nil
    print(price)
}

例子

// 1.根據(jù)一個字符串, 創(chuàng)建URL
if let url = URL(string: "http://www.baidu.com/中文") {
    URLRequest(url: url)
}


// 2.根據(jù)一個文件的名稱, 獲取文件的路徑
let path : String? = Bundle.main.path(forResource: "demo1.plist", ofType: nil)
if let path = path {
    NSArray(contentsOfFile: path)
}


// 3.從字典中取值;
let dict : [String : Any] = ["name" : "gzp", "height" : 1.88, "age" : 18]
if let name = dict["name"] as? String {
    print(name.characters.count)
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容