浅谈我对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'

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