*來處理值可能缺失的情況。
C 和 Objective-C 中并沒有可選類型這個概念。
最接近的是 Objective-C 中的一個特性,
一個方法要不返回一個對象要不返回nil,nil
表示“缺少一個合法的對象”
2.可選值: optionals
****有兩種狀態(tài)****:
1.有值
2.沒有值, 沒有值就是nil
?表示兩種狀態(tài):
一種是有值(有具體的某個值)
一種是沒有值(沒有代表為nil)
當(dāng)為?修飾時,表明這個變量有可能為nil
有值
var optValue: Int? = 9
沒有值
var optValue: Int?
var optValue: Int? = nil
2.1可選值可以利用**if****語句來進行判斷
var optValue: Int? = 10
if optValue != nil
{
print("有值:\(optValue)")
}else {
print("沒有值:\(optValue)")
}
輸出結(jié)果:有值:Optional(10)
var optValue: Int?
if optValue != nil
{
print("有值:\(optValue)")
} else {
print("沒有值:\(optValue)")
}
輸出結(jié)果: 沒有值:nil
var optValue: Int? = nil
if optValue != nil
{
print("有值:\(optValue)")
}else {
print("沒有值:\(optValue)")
}
輸出結(jié)果: 沒有值:nil
3.提取可選類型的值(使用!****強制解析****)
將optValue中的整型值強制拿出來賦值給變量result,
換句話說就是告訴編譯器optValue一定有值
因為可選類型有兩種狀態(tài)有值和沒有值, 所以需要告訴編譯器到底有沒有值
需要注意的是如果強制解析optValue
但是optValue中沒有值時會引發(fā)一個運行時錯誤
var optValue: Int? = 9
var result: Int = optValue!
print(result)
輸出結(jié)果:9
var optValue6: Int?var result2: Int = optValue6!
print(result2)
結(jié)果為報錯:
fatal error:
unexpectedly found nil while unwrapping an Optional value
4.可選綁定###
為了更安全的解析可選類型的值, 一般情況下使用可選綁定
如果optValue沒有值就不會做任何操作
如果optValue有值會返回true并將optValue的值賦值給result執(zhí)行大括號中的內(nèi)容
var optValue: Int? = 9
if let result = optValue
{
print(result)
}