使用swift 開發,會用到String? 和 String 、 Int 和 Int? 、Float 和Float?……,對於官方文檔的解鎖,“?”所標註的爲可選類型。鑑於swif的語言特性,變量在創建之初,就需要知道它的類型,可以是使用“:”標註。例如代碼:
var name : String
或者是賦值時,值的類型即爲該變量的類型,例如代碼:
var name = "White Lee"
除了以上的數據類型,swift還有一種常用的的類型,即爲可選類型,表示該變量值可以爲空值,即爲:nil。就我個人理解,可選類型不是一個單一的數據類型,它是數據類型的一個拓展,表示該變量可爲空值。我們常用的可選類型可以是 基本數據類型,如:
String?
Int?
Float?
Bool?
也可以是任何其他變量的類型:
UITableView?//UI控件
Model?//數據模型 自定義的
ViewController?//控制器
對於可選類型,對變量取值時,我們發現它是被“Optional()”包裹了一層,例如:
var name : String? = "White Lee"
var name1 : String = "White Lee"
print("name = \(name)")
print("name1 = \(name1)")
日誌打印結果:
拆包方法:
使用“??”設置如果爲空值時的默認值,代碼:
print("name = \(name ?? "值爲空")")
打印結果:
可以看到,此時“Optional()”被去除。
對於不帶帶有"?"的非可選類型數據,添加"??",可以看到Xcode會提示去除"??",如下圖
現在修改變量name的值,代碼:
name = nil
print("name = \(name ?? "值爲空")")
打印結果:
以上爲我對於可選類型optional的理解,和我的拆包方法。
如果對於非可選類型變量賦值爲nil,代碼
var name1 : String = "White Lee"
name1 = nil
會提示錯誤: Nil cannot be assigned to type 'String'