Swift中的可选链
2016-05-18 16:44
232 查看
自述
_____________________________________________
前段时间一直在忙公司项目上的事情,很久没有这样闲下来写博文觉得Swift是一种趋势,也一直在学习当中, 在学习的过程中,把自己的感悟和
总结写在这里,就当是自己一个存放笔记的地方, 顺便对有需要这方面知
识的朋友的一种分享.
在学习过程中, 自己也写了一些demo,已经放在了GitHub上,有兴趣的
朋友可以看一看
https://github.com/CJGitH/QQMusic
_____________________________________________
那么,接下来进入正题,继续学习ingSwift中的可选链
可选连的概念
它的可选性体现于请求或调用的目标当前可能为空(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()
相关文章推荐
- 利用swift写的tableView
- Swift中一些小技巧、小知识点
- swift optional——swift学习(二)
- 窥探Swift之别样的枚举类型
- 【Swift学习】Swift编程之旅---扩展(二十四)
- Swift学习第四枪
- Swift学习第三枪
- OC转Swift工具
- 启动swift服务的时候出现Exception: Could not bind to 0.0.0.0:8080 after trying for 30 seconds
- ios swift 测试框架翻译之Quick例子和一ArrangeActAssert
- ios swift 测试框架翻译之Quick例子和一ArrangeActAssert
- Swift 初步了解
- swift 往系统日历中添加提醒事项
- Swift学习之--TableView的基本使用
- Swift学习第二枪
- ios swift 测试框架翻译之Quick例子和一组例子的有序测试
- ios swift 测试框架翻译之Quick例子和一组例子的有序测试
- 今天看到一篇不错的swift入门材料,默默分享一下
- swift版QQ音乐播放器(一)
- swift基础语法--闭包