Swift中分配左侧使用的可选链接

Boo*_*oon 4 uitableview optional swift optional-chaining

在赋值语句的左侧使用可选链接是什么意思?如果可选变量为nil,应用程序会崩溃吗?

例如

// cell is a UITableViewCell
cell.textLabel?.text = "Test"
Run Code Online (Sandbox Code Playgroud)

gre*_*heo 6

有点像一个短路&&运算符,当它达到第一个假值时停止,可选链接将在达到第一个nil值时停止。

因此,在类似的极端情况下container?.cell?.textLabel?.text = "foo",容器,单元格或textLabel中的任何一个都可能为零。如果其中任何一个是有效的,则该声明实际上是无操作的。仅当整个链为非零时,分配才会发生。


rin*_*aro 5

为了完整性,除了@gregheo回答:

可以通过更改值本身或分配给值的成员之一来修改可选链接表达式的未包装值。如果可选链表达式的值为nil,则不评估赋值运算符右侧的表达式。

引用自“可选连锁表达式”