美文网首页
Swift中使用optional

Swift中使用optional

作者: 一个栗 | 来源:发表于2021-05-24 09:58 被阅读0次

    为什么需要optional

    • Object-C 里的 nil 是无类型的指针
    • Object-C 里面的数组、字典、集合等不允许放入 nil
    • Object-C 所有对象变量都可以为 nil
    • Object-C 只能用在对向上,而在其他地方又用其他特殊值(如 NSNotFound)表示值的缺失

    Optional

    • 通过在变量类型后加 ? 表示:
      这里有一个值,它等于 x
      或者
      这里根本没有值
    • 你可以通过给可选变量赋值一个 nil 来将之设置为没有值
      -在OC中 nil 是一个指向不存在对象的指针
    • 在 Swift 中,nil 不是指针,是值缺失的一种特殊类型,任何类型的可选项都可以设置为 nil,而不仅仅是对象类型
    
    

    Optional-If 语句判断展开

    • 可选项是没法直接使用的
    • 需要用 !展开之后才能使用(意思是我知道这个可选项里面有值,展开吧)
    var str: String? = "abc"
    if str != nil {
        let count = str!.count
        print(count)
    }
    
    打印结果:
    3
    

    Optional 强制展开

    • 使用!来获取一个不存在的可选值会导致允许错误,在使用!强制展开之前必须确保可选项中包含一个非nil 的值。

    Optional - 绑定

    • 可以使用可选项绑定来判断可选项是否包含值,如果包含就把值赋给一个变量或常量
    • 可选绑定可以与if 和 while 的语句使用来检查可选项内部的值,并赋值给一个变量或常量。
    • 同一个if 语句中包含多可选项绑定,用逗号分隔即可。如果任一可绑定结果是nil 或者布尔值为 false ,那么整个 if 判断或被看作 false。
    var str: String? = "abc"
    if let actualStr = str {
        let count = actualStr.count
        print(count)
    }
    
    打印结果:
    3
    

    Optional - 隐式展开

    • 有些可选项一旦被设定值之后,就会一直拥有值,在这种情况下,就可以去掉检查的需求,也不必每次访问的时候都进行展开。
    • 通过在声明的类型后面添加一个叹号(string!)而非问号(string?)来书写隐式展开可选项
      -隐式展开可选项主要被用在Swift类的初始化过程中
    var str: String! = "abc"
    let count = str.count
    print(count)
    
    打印结果:
    3
    

    Optional - 可选链

    • 可选项后面加问号
    • 如果可选项不为 nil,返回一个可选项结果,否则返回 nil
    var str: String! = "abc"
    let count = str?.count
    if count != nil {
        let lastIndex = count! - 1
        print(lastIndex)
    }
    
    打印结果:
    2
    

    相关文章

      网友评论

          本文标题:Swift中使用optional

          本文链接:https://www.haomeiwen.com/subject/rthzjltx.html