Swift---17.可选链

  • 前言:

    • 在基础类型中,我们知道有一种可选类型Optional,该类型有两种可能.一为nil,二为它标志的类型.写法为:var/let name:type?/!
    • 我们使用?!来表示这是一个可选的类型,!表示该参数不需要强制解析,而?需要.
    • 在该变量或常量后添加!来强制解析,如果为nil,会引起编译错误,避免这个错误,我们使用可选链
  • 可选链:

用于处理可选类型的属性,方法和下标,可以代替强制解析.也可以调用方法与下标.使用?来调起可选链,它会自己判断访问的实例是否为nil

  • 调用属性
  • 调用方法
  • 调用下标
  • 多级调用
    class Person {
        var school : School?
    }
    class School {
        var name = ""
        var grade:Grade?
        func log() {
            print("haha")
        }
        subscript(str:String) ->String {
            return str+"!"
        }
    }
    class Grade {
        var age = 0
    }
    var person = Person()
    //person.school!.name
    person.school?.name
    person.school?.log()
    person.school?["asd"]
    var school = School()
    school.name = "asd"
    //多级调用
    person.school = school
    print(person.school?.name ?? "none value")
    person.school?.grade?.age
    //方法返回可选值
    person.school?.name = ""
    if var str = person.school?.schoolName() {
        print(str)
    }else {
        print("没有名称")
    }
    ```

你可能感兴趣的:(Swift---17.可选链)