可选连的概念
-
它的可选性体现于请求或调用的目标当前可能为空(nil)
- 如果可选的目标有值,那么调用就会成功;
- 如果选择的目标为空(nil),则这种调用将返回空(nil)
多次调用被链接在一起形成一个链,如果任何一个节点为空(nil)将导致整个链失效。
-
可选链的使用
- 在可选类型后面放一个问号,可以定义一个可选链。
- 这一点很像在可选值后面放一个叹号来强制拆得其封包内的值
- 它们的主要的区别在于当可选值为空时可选链即刻失败
- 然而一般的强制解析将会引发运行时错误。
- 因为可选链的结果可能为nil,可能有值.因此它的返回值是一个可选类型.
- 可以通过判断返回是否有值来判断是否调用成功
- 有值,说明调用成功
- 为nil,说明调用失败
可选链的示例
- 从可选链中取值
- 示例描述: 人(Person)有一个狗(Dog),狗(Dog)有一个玩具(Toy),玩具有价格(price)
- 使用代码描述上述信息
// 1.定义类
class Person {
var name : String
var dog : Dog?
init(name : String) {
self.name = name
}
}
class Dog {
var color : UIColor
var toy : Toy?
init(color : UIColor) {
self.color = color
}
func runing() {
print("跑起来")
}
}
class Toy {
var price : Double = 0.0
}
// 2.创建对象,并且设置对象之间的关系
// 2.1.创建对象
let person = Person(name: "小明")
let dog = Dog(color: UIColor.yellowColor())
let toy = Toy()
toy.price = 100.0
// 2.2.设置对象之间的关系
person.dog = dog
dog.toy = toy
- 需求:获取小明的大黄宠物的玩具价格
- 取出的值为可选类型,因为可选链中有一个可选类型为nil,则返回nil
- 因此结果可能有值,可能为nil.因此是一个可选类型
let price = person.dog?.toy?.price
print(price) // Optional(100.0)\n
- 需求:给小明的大黄一个新的玩具
- 相当于给可选类型赋值
person.dog?.toy = Toy()
- 需求:让小明的狗跑起来
- 如果可选类型有值,则会执行该方法
- 如果可选类型为nil,则该方法不会执行
person.dog?.runing()
- 系列文章
01 Swift最基本的语法变化
02 Swift中的变量和常量
03 Swift中的数据类型
04 Swift逻辑分支
05 Swift中的循环
06 Switf中的字符串
07 Swift 数组
08 Swift字典
09 Swift 元组
10 Swift 可选类型
11 Swift 类型转化
12 Swift 函数
13 Swift 枚举类型
14 Swift 结构体
15 Swift 类的定义
16 Swift 类的构造函数
17 Swift 类的析构函数
18 自动引用计数
19 Swift 可选链
20 协议
21 闭包
22 Swift 懒加载
23 Swift 注释