注意:swift中不能隨意給一個對象賦值為nil。
在OC中我們可以給一個對象類型變量賦值為nil或者是一個對象;而在swift中如果想給一個變量賦值為nil,那么必須明確指定為可選類型才可以,也就是說普通變量是不能賦值為nil 的。
可選類型
如何定義一個可選類型:
Swfit語言定義后綴?作為命名類型Optional的簡寫,換句話說,以下兩種聲明是相等的:
var optionalInteger: Int?
var optionalInteger: Optional<Int>
注意:swift中的可選類型的值是不能直接進行使用的。
使用前,要進行以下任意一種方式進行處理。
1.強制解包
怎么進行強制解包:變量名稱 + !
let number1 : Int? = 10
let number2 : Int = 20
let sum = number1! + number2
弊端:如果這個可選類型為nil
,我們進行強制解包,那么就會報錯。
2.if(可選綁定)
為了解決強制解包的弊端,我們可以使用可選綁定來解決。
var str1 : String? = "yishenglei"
if let aaa = str1 // 如果str1值為nil,表示條件不成立,就不會來到大括號中
{
print(str1)
}
弊端:嵌套太嚴重
let v1 : Int? = 10
let v2 : Int? = 20
let v3 : Int? = 30
if let n1 = v1
{
if let n2 = v2
{
if let n3 = v3
{
let sum0 = n1 + n2 + n3
}
}
}
3.guard(守護者)
- 作用:類似可選綁定
- 只有條件為假,才會執行else后面的大括中的代碼。
let v1 : Int? = 10
let v2 : Int? = 20
let v3 : Int? = 30
func test01()
{
guard let m1 = v1 else
{
print("v1沒有值")
return
}
guard let m2 = v2 else
{
print("v2沒有值")
return
}
guard let m3 = v3 else
{
print("v3沒有值")
return
}
print(m1 + m2 + m3) // 能執行這一步,說明v1,v2,v3都不為空
}
test01()