`

《从零开始学Swift》学习笔记(Day 26)——可选链

阅读更多

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

 

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

 

可选链:

类图:




 
 

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

下面看示例代码:

c

lass 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属性。

修改代码如下:

 

lass 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)    //可选链

 

 

c

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

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

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

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

 

 

 

 

  • 大小: 27.9 KB
  • 大小: 21.1 KB
分享到:
评论

相关推荐

    从零开始学swift

    从零开始学swift,图灵原创,关东升著。基于swift2.x。2016年3月版

    Swift学习笔记与资料集合

    这本书全面且深入地阐述了Swift的各个方面,包括语言的高级特性,如错误处理、可选链、类型系统、泛型、模块化以及Swift如何与其他Apple框架集成。它是学习Swift不可或缺的参考书籍。 "Swift编程入门与精通.pdf" ...

    OpenStack从零开始学

    《OpenStack从零开始学》是一本面向初学者的指南,旨在帮助读者全面理解并掌握OpenStack这一开源云操作系统的基础知识和实践技能。OpenStack是一个庞大且复杂的项目,由多个组件构成,为云计算提供了基础设施即服务...

    Swift学习笔记含项目代码.zip

    Swift学习笔记含项目代码.zipSwift学习笔记含项目代码.zipSwift学习笔记含项目代码.zipSwift学习笔记含项目代码.zipSwift学习笔记含项目代码.zipSwift学习笔记含项目代码.zipSwift学习笔记含项目代码.zipSwift学习...

    从零学习SwiftUI.zip

    以下是从零开始学习SwiftUI的一些建议: 了解Swift语言基础:SwiftUI是用Swift语言编写的,因此了解Swift语言的基础知识是非常重要的。你可以从苹果官方文档、在线教程或书籍中学习Swift语言。 学习SwiftUI基本概念...

    从零开始学swift计时器app开发

    本教程将带你从零开始学习如何使用Swift来开发一个计时器应用。计时器功能在日常生活中非常实用,比如用于烹饪定时、健身计时等。在Swift中,我们可以利用Timer类来实现这样的功能。 首先,你需要了解Swift的基础...

    Swift学习笔记

    Swift 学习笔记 Swift 是一种现代化的高性能编程语言,旨在为 iOS、macOS、watchOS 和 tvOS 等苹果平台上的应用程序提供强大的开发能力。本文将总结 Swift 的一些基础知识,包括基本语法、变量声明、数据类型、控制...

    Swift教程:Swift基础 可选类型(optional)1-拆包和绑定

    在这个“Swift教程:Swift基础 可选类型(optional)1-拆包和绑定”中,我们将深入探讨Swift中的一个核心特性——可选类型(Optional)。了解并熟练掌握可选类型是编写安全Swift代码的关键。 首先,让我们定义什么是...

    从0开始入门学习Swift

    从简单的程序开始,逐步增加难度,熟悉 Swift 的语法和特点。此外,加入 Swift 社区也是学习的重要一步。参加 Swift 社区,了解其他开发者的经验和分享,获取最新的信息和技术趋势。最后,持久学习 Swift。学习 ...

    swift-贝塞尔曲线使用——模拟心跳曲线

    通过研究和学习这个项目,你可以更直观地理解贝塞尔曲线在Swift中的应用,并且能够将这种技术应用于自己的项目中。 总的来说,Swift中的贝塞尔曲线提供了一种强大的方式来创建动态、流畅的动画效果。通过理解和实践...

    iOS开发 swift语言入门 学习资料

    Swift还引入了可选类型(Optionals),以防止常见的空指针错误,大大提高了代码的稳定性和安全性。 Swift的语法相较于Objective-C更为简洁。例如,Objective-C中的方法声明在Swift中可以简化为单行表达式。此外,...

    IOS开发-Swift-基础知识学习笔记

    Swift采用现代化的编程理念,支持类型推断、可选类型、泛型、闭包、协议等特性,使得编写代码更加简洁和高效。 二、Swift语法基础 1. 变量与常量 在Swift中,我们使用`var`声明变量,`let`声明常量。例如: ```...

    swift学习笔记

    这篇学习笔记主要涵盖了Swift的基础知识和关键特性,旨在帮助初学者理解并掌握这种现代、强大且易读的语言。 一、Swift语言基础 Swift的语法简洁明了,易于理解。它引入了类型推断,使得编写代码时可以减少冗余的...

    Swift编程入门教程.pdf

    Swift编程入门教程,从零开始,深入浅出的Swift语言学习指南; Swift编程入门教程,从零开始,深入浅出的Swift语言学习指南; Swift编程入门教程,从零开始,深入浅出的Swift语言学习指南; Swift编程入门教程,从零...

    我的Swift学习项目实战代码.zip

    Day 03的学习通常会深入到Swift的高级特性,如枚举(Enums)、可选链(Optional Chaining)、闭包(Closures)和泛型(Generics)。枚举是一种强大的类型,可以用来定义一组相关的值。可选链是处理可选类型的一种...

    整理好的swift学习资源和笔记.zip

    目前最全最火的swift学习资源和笔记,非常适合小白入门 目前最全最火的swift学习资源和笔记,非常适合小白入门 目前最全最火的swift学习资源和笔记,非常适合小白入门 目前最全最火的swift学习资源和笔记,非常...

    Swift学习代码.zip

    5. **Day 03**:第三天的学习可能涉及Swift的高级特性,如协议(protocols)、泛型(generics)、可选链(optional chaining)和强制解包(forced unwrapping)。 6. **Day 04**:最后一天可能包含更进阶的主题,...

    BBCo - iOS开发入门教程 SwiftUI 微博App项目实战 零基础学习Swift编程.zip

    本教程旨在帮助初学者从零开始学习Swift编程,并通过实战微博App的项目开发,掌握iOS应用的基本构建过程。 一、Swift语言基础 Swift是Apple为iOS、iPadOS、macOS、watchOS和tvOS开发的开源编程语言。它的设计目标是...

    SwiftNote:Swift学习笔记

    SwiftNote 是一个关于Swift编程语言的学习笔记集合,旨在帮助开发者深入了解和掌握Apple的这款现代、高性能的编程语言。这份笔记可能包含了从基础语法到高级特性的全面讲解,以及作者在学习过程中的心得和实践案例。...

Global site tag (gtag.js) - Google Analytics