淺談我對Optional的理解和拆包

使用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'

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章