Swift Optional 链式调用

2024 年 8 月 29 日 | 阅读 3 分钟

可选链是一种用于在可能为 nil 的可选值上调用属性、方法和下标的方式。如果可选值有值,则属性、方法或下标调用成功;如果可选值为 nil,则属性、方法或下标调用返回 nil。

你可以将多个查询链接在一起,但如果链中的任何一环为 nil,整个链将失败。

可选链作为强制解包的替代方案

可选链通过在调用属性、方法或下标的可选值后放置问号 (?) 来指定,如果可选值不为 nil。

可选链强制解包
当可选值为 nil 时,可选链失败。当可选值为 nil 时,强制解包会触发运行时错误。
运算符 ? 放置在可选值之后,以调用属性、方法或下标! 放置在可选值之后,以调用属性、方法或下标来强制解包值。

可选链示例(未在基类中声明值)

可选链的结果与预期的返回值相同,但包装在可选值中。这意味着通常返回 Int 的属性在通过可选链访问时将返回 Int?

让我们举个例子来说明可选链和强制解包的区别

使用 ? 运算符进行可选链的程序

输出

Student name cannot be retrieved 

在这里,Exam 是一个类名,包含 student 作为成员函数。子类声明为 Toppers,name 是一个成员函数,初始化为 "Intelligent"。通过创建一个带有可选 " ?" 的实例 "stud" 来初始化对超类的调用。

由于未在基类中声明该值,因此将存储 nil 并由 else 处理程序块显示。

可选链和访问属性的模型类

当您必须声明多个子类作为模型类时使用它。它方便您定义复杂的模型并访问方法、属性、下标、子属性。

示例

输出

Rectangle Area is not specified