介紹
- 概念:
- 在OC開發(fā)中,如果一個變量暫停不使用,可以賦值為0(基本屬性類型)或者賦值為空(對象類型)
- 在swift開發(fā)中,nil也是一個特殊的類型.因為和真實的類型不匹配是不能賦值的(swift是強語言)
// 錯誤寫法
let string : String = nil
- 但是開發(fā)中賦值nil,在所難免.因此推出了可選類型
- 可選類型的取值:
- 空值
- 有值
定義
定義一個可選類型有兩種寫法
- 最基本的寫法
let string : Optional<String> = nil
- 語法糖(常用)(使用?表示)
let string : String? = nil
基本使用
取值:
- 可選類型+!,強制解包
- 如果一個可選類型中沒有值,強制解包會報錯
- 在強制解包之前,最好對可選類型進行判斷.如果有值,在進行解包
- 可選綁定:判斷str是否有值
// 演練一:
// 定義可選類型
var string : Optional<String> = nil
// 給可選類型賦值
string = "Hello world"
// 打印結果
print(string)
// 結果:Optional("Hello world")\n
// 因為打印出來的是可選類型,所有會帶Optional
// 取出可選類型的真實值(解包)
print(string!)
// 結果:Hello world\n
// 演練二:
string = nil
print(string!) // 報錯
// 正確寫法:
if string != nil {
print(string!)
}
// 簡單寫法:為了讓在if語句中可以方便使用string
if var str = string {
print(str)
}
應用場景
let urlString = "http://www.baidu.com"
let url : NSURL? = NSURL(string: urlString)
// 判斷url是否有值,來決定是否創(chuàng)建NSURLRequest對象
if url != nil {
NSURLRequest(URL: url!)
}
// 或者
if let tempUrl = url {
NSURLRequest(URL: tempUrl)
}