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

前端之家收集整理的这篇文章主要介绍了swift学习日记-可选链(optional chaining)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

可选链式调用(Optional Chainingwiki

可选链式调用:是一种可以在当前值可能为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])")

猜你在找的Swift相关文章