您的位置:首页 > 移动开发 > Swift

Swift中的可选链

2016-05-18 16:44 232 查看

自述

_____________________________________________

前段时间一直在忙公司项目上的事情,很久没有这样闲下来写博文

觉得Swift是一种趋势,也一直在学习当中, 在学习的过程中,把自己的感悟和

总结写在这里,就当是自己一个存放笔记的地方, 顺便对有需要这方面知

识的朋友的一种分享.

在学习过程中, 自己也写了一些demo,已经放在了GitHub上,有兴趣的

朋友可以看一看

https://github.com/CJGitH/QQMusic

_____________________________________________

那么,接下来进入正题,继续学习ing

Swift中的可选链

可选连的概念

它的可选性体现于请求或调用的目标当前可能为空(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()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: