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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值