美文网首页
可选链式调用

可选链式调用

作者: 一根聪 | 来源:发表于2017-03-03 11:25 被阅读20次

    可选链式调用(Optional Chaining)wiki

    可选链式调用:是一种可以在当前值可能为nil的可选值请求和调用属性、方法或者下标。与Objective-C中向nil发送消息有些相像,但是swift可选链式调用可以作用于任何类型,并且能检查调用是否成功。

    1 使用可选链式调用代替强制展开
    通过在想调用的属性、方法或下标的可选值(optional value)后面跟一个?,可以定义一个可选链,与!类似,不同之处在于!可能会出发运行时错误。

    class Person {
        var name: String?
    }
    
    let person = Person()
    print(person.name?.characters.count)  // nil
    print(person.name!.characters.count)  // 运行时错误
    

    2 为可选链式调用定义模型类型
    通过使用可选链式调用可以调用多层属性、方法和下标。这样可以在复杂的模型中向下访问各种子属性,并且判断能否访问子属性的属性、方法或下标。

    3 通过可选链式调用访问属性
    4 通过可选链式调用调用方法
    5 通过可选链式访问下标
    如下例子 ,存在一个Student类和一个Teacher类

    class Student {
        var name: String?
        
        func read() {
            print("read book")
        }
    }
    
    class Teacher {
        var students: [Student]?
        var numberOfStudent: Int? {
            get {
                return students?.count
            }
        }
        
        subscript (i: Int) -> Student? {
            return self.students?[i]
        }
    }
    
    let teacher = Teacher()
    // 访问属性
    print("number Of Student: \(teacher.numberOfStudent)")
    // 访问方法
    teacher.students?[0].read()
    // 访问下标
    print("first Student: \(teacher[0])")
    

    相关文章

      网友评论

          本文标题:可选链式调用

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