5

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

例如

// cell is a UITableViewCell
cell.textLabel?.text = "Test"
4

3 回答 3

10

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

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

于 2015-03-23T22:26:33.280 回答
6

为了完整起见,除了@gregheo 回答:

可以通过改变值本身或分配给值的成员之一来修改可选链表达式的展开值。如果可选链表达式的值为nil,则不计算赋值运算符右侧的表达式。

引自“可选链表达式”

于 2015-03-24T08:55:20.463 回答
1

它只是作为一个可选的,你可以将它设置为一个字符串或 nil。它们都不会使应用程序崩溃,除非您打开变量而不捕获它是否为 nil,当它为 nil 时。如果您的链中的任何内容是可选的,那么您的整个链都是(或至少是可选之后的所有内容)

于 2015-03-23T22:09:07.920 回答