Swift 2.0学习笔记(Day 26)——可选链

Swift 2.0学习笔记(Day 26)——可选链,第1张

概述 Swift2.0学习笔记(Day 26)——可选链   原创文章,欢迎转载。转载请注明:关东升的博客   在Swift程序表达式中会看到问号(?)和感叹号(!),它们代表什么含义呢?这些符号都与可选类型和可选链相关,下面来看看可选链。   可选链: 类图: 它们之间是典型的关联关系类图。这些类一般都是实体类,实体类是系统中的人、事、物。Employee通过dept属性与Department关 

Swift2.0学习笔记(Day 26)——可选链

原创文章,欢迎转载。转载请注明:关东升的博客

Swift程序表达式中会看到问号(?)和感叹号(!),它们代表什么含义呢?这些符号都与可选类型和可选链相关,下面来看看可选链。

可选链:

类图:

它们之间是典型的关联关系类图。这些类一般都是实体类,实体类是系统中的人、事、物。Employee通过dept属性与Department关联,Department通过comp属性与Company关联。

下面看示例代码:

class Employee {       var no: Int = 0    var name: String = "Tony"    var job: String?    var salary: Double = 0    var dept: Department = Department() } class Department {     var no: Int = 10    var name: String = "SALES"    var comp: Company = Company()} class Company {        var no: Int = 1000    var name: String = "EOrIEnt"} let emp = Employee()   //Employee实例print(emp.dept.comp.name)  //

emp.dept.comp.name可以引用到Company实例,形成一个引用的链条,但是这个“链条”任何一个环节“断裂”都无法引用到最后的目标(Company实例)。

给定一个Employee实例,一定会有一个Department与其关联。但现实是一个新入职员工未必有部门,这种关联关系有可能有值,也有可能没有值,我们需要使用可选类型(Department?)声明dept属性。

修改代码如下:


class Employee {    var no: Int = 0    var name: String = "Tony"    var job: String?    var salary: Double = 0    var dept: Department? 	// = Department() }class Department {    var no: Int = 10    var name: String = "SALES"    var comp: Company? // = Company()}class Company {    var no: Int = 1000    var name: String = "EOrIEnt"}let emp = Employee()print(emp.dept!.comp!.name)	//显示拆包print(emp.dept?.comp?.name)	//可选链

其中可选类型的引用,可以使用感叹号(!)进行显示拆包,代码修改如下:

print(emp.dept!.comp!.name)

但是显示拆包有一个弊端,如果可选链中某个环节为nil,将会导致代码运行时错误。我们可以采用更加“温柔”的引用方式,使用问号(?)来代替原来感叹号(!)的位置,如下所示:

print(emp.dept?.comp?.name)


欢迎关注关东升新浪微博@tony_关东升。
关注智捷课堂微信公共平台,了解最新技术文章、图书、教程信息

更多精品iOSCocos、移动设计课程请关注智捷课堂官方网站:http://www.zhijieketang.com
智捷课堂论坛网站:http://51work6.com/forum.php

总结

以上是内存溢出为你收集整理的Swift 2.0学习笔记(Day 26)——可选链全部内容,希望文章能够帮你解决Swift 2.0学习笔记(Day 26)——可选链所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1083452.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-27
下一篇2022-05-27

发表评论

登录后才能评论

评论列表(0条)