下面就來說說吧!然後呢。區別以及如何使用!
?還有!事實上,它們是Swift語言中可選操作的語法糖。
有哪些可選類型?在Swift中可以聲明壹個沒有初始值的屬性,Swift中引入了可選類型來解決這個問題。它是通過添加壹個?接線員。
比如:var名稱:String?
Optional實際上是壹個enum,有兩種類型:None和Some。其實所謂的nil是可選的。None,非零值是可選的。Some,然後原始值會被Some(T)包裝,這就是為什麽在使用Optional時需要解包(從enum中取出原始值)。下面是enum可選的定義。
既然如此,那麽var name: String呢?這個語法怎麽理解?
壹旦聲明為可選,如果沒有顯式賦值,將會有壹個默認值nil。If可用於判斷可選值是否有值:
如何使用可選值?文件中還提到,使用可選值時,需要在具體操作前加壹個,比如調用方法、屬性、下標索引等。如果值為零,則為,即可選。無,將跳過並且不執行以下操作;如果有值,它是可選的。有的,而且可能會解包,然後會對解包後的值執行下面的操作,保證這個操作的安全性。
?的使用場景:
1.聲明可選的值變量
2.在操作中使用可選值來判斷它是否能響應下面的操作。
3.用作?向下轉換(向下轉換)
上述可選值需要解包得到原值,然後才能操作。怎麽拆包?
有兩種打開包裝的方法:
事實上,還有另壹種叫做隱式解包選項。比如將在viewDidLoad中初始化的變量可以直接定義為var str :String!意思是每次對該類型的值進行操作,都會在操作前自動加壹!打開包裝,然後執行以下操作。當然,如果值為nil,則會出現錯誤崩潰。
舉個很簡單的栗子:
!的使用場景:
1.強制解包可選值。
2.聲明隱式解包變量,這些變量通常用於類中的屬性。
其實!然後呢。問題很坑,不要把它看做只是兩個符號,因為只要有壹個不小心,妳就會發現項目運行的時候會莫名其妙的崩潰。關鍵是調試模式不太方便定位錯誤類型。自己整理可選類型的相關用法。壹種是記錄鞏固所學,但希望對大家有幫助。本文可能有錯誤和不足之處,但希望提出來,我會及時改正。