swift学习日记-可选链(optional chaining)

可选链式调用(Optional Chainingwikihtml

 

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

 

1 使用可选链式调用代替强制展开spa

经过在想调用的属性、方法或下标的可选值(optional value)后面跟一个?,能够定义一个可选链,与!相似,不一样之处在于!可能会出发运行时错误。htm

class Person {ip

    var name: String?get

}io

 

let person = Person()class

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])")

相关文章
相关标签/搜索