swift-基础07-if语句,强制解析与可选绑定和nil

    let number = "123"

//    let number = "hello"

    let convertNumerber = Int(number)

    

    if (convertNumerber != nil) {

    

      print("convertNumber is \(convertNumerber!)")

    

    } else {

      

      print("convertNumber is \(convertNumerber)" )

      

    }

    如果你确定可选包含一个值,你可以在名称后面加惊叹号 ! 访问可选的值。

    惊叹号 ! 表示:这个可选有值,请使用它。” 

    使用!表示把这个可变类型降级为不可变类型

    这就是所谓的 强制解析(forced unwrapping)可选的值

    也叫拆包

    可空类型的精度(取值范围)大于不可控类型,所以拆包又叫强制解析

    

    如果用 ! 来获取一个可选值可能会导致运行时错误。所以,

    使用 ! 来强制解析值之前,一定要确定可选包含一个非 nil 的值(if判断一下)

   

    可选绑定(optional binding)用来判断可选是否包含值,

    如果包含就把值赋给一个临时常量或者变量。

    可选绑定一般用在 if while 语句中,

    对可选的值进行判断并把值赋给一个常量或者变量,例子如下

    

//    let number1 = "123"

    let number1 = "hello"

    

    if let convertNumerber1 = Int(number1) {

      

      print("convertNumber1 is \(convertNumerber1)")

      

    } else {

      

      print("convertNumber1 is nil ")

      

    }

    以上代码表示:如果 Int(number1) 返回的可选 Int 包含一个值,

    创建常量 convertNumerber1,并将可选包含的值赋给它。

    如果转换成功,convertNumerber1 常量可以在 if 语句的第一个分支中使用。

    convertNumerber1已经被初始化,所以不需要再使用 ! 获取它的值。

    在这个例子中,convertNumerber1用来输出转换结果。

    

    你可以在可选绑定中使用常量和变量。

   

    通过给可选的变量赋值给nil来表示他们没有值

    

    var serverResponseCode :Int? = 404

    

    print(serverResponseCode)

    

    serverResponseCode = nil

    

    print(serverResponseCode)

    

    var myBananaCount:Int?

    

    print(myBananaCount)

   

    var myAppleCount = 3

    myAppleCount = nil

    但是nil不能用于非可选的常量或者变量。

    如果代码中有常量或者变量需要处理值缺失的情况,把他们声明称对应的可选类型

    

    如果一个可选的常量或者变量没有提供默认值,他们会被自动设置为nil

    

    Swift nil Objective-C nil 并不一样。

    Objective-C 中,nil 是一个指向不存在对象的指针

    Swift 中,nil 不是指针,它是一个确定的值,用来表示值的缺失。

    任何类型的可选都可以被设置为 nil,不只是对象类型。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值