【发布时间】:2015-05-27 02:16:42
【问题描述】:
在赋值语句的左侧使用可选链是什么意思?如果可选变量为 nil,应用会崩溃吗?
例如
// cell is a UITableViewCell
cell.textLabel?.text = "Test"
【问题讨论】:
标签: uitableview swift optional optional-chaining
在赋值语句的左侧使用可选链是什么意思?如果可选变量为 nil,应用会崩溃吗?
例如
// cell is a UITableViewCell
cell.textLabel?.text = "Test"
【问题讨论】:
标签: uitableview swift optional optional-chaining
为了完整起见,除了@gregheo 回答:
可以修改可选链表达式的展开值,方法是改变值本身,或者分配给值的成员之一。如果可选链表达式的值为
nil,则不计算赋值运算符右侧的表达式。
【讨论】:
有点像短路 && 运算符,当它达到第一个 false 值时停止,可选链接将在它达到第一个 nil 值时停止。
所以在像container?.cell?.textLabel?.text = "foo" 这样的极端情况下,容器、单元格或文本标签中的任何一个都可能为零。如果其中任何一个是,则该声明实际上是无操作的。只有当整个链非零时才会发生分配。
【讨论】:
它只是作为一个可选的,你可以将它设置为一个字符串或 nil。它们都不会使应用程序崩溃,除非您打开变量而不捕获它是否为 nil,当它为 nil 时。 如果您的链中的任何内容是可选的,那么您的整个链都是(或至少是可选之后的所有内容)
【讨论】: