Uitableview Swift作业左侧使用的可选链接
当在赋值语句的左侧使用可选链接时,这意味着什么?如果可选变量为nil,应用程序会崩溃吗 e、 gUitableview Swift作业左侧使用的可选链接,uitableview,swift,optional,optional-chaining,Uitableview,Swift,Optional,Optional Chaining,当在赋值语句的左侧使用可选链接时,这意味着什么?如果可选变量为nil,应用程序会崩溃吗 e、 g 它只是作为一个可选项,您可以将其设置为字符串或nil。它们都不会使应用程序崩溃,除非你在变量为nil时打开变量而不捕获它。 如果链中的任何内容是可选的,那么整个链(或者至少是可选之后的所有内容)有点像短路&&操作符,当到达第一个假值时停止,可选链将在到达第一个零值时停止 因此,在极端情况下,如container?.cell?.textLabel?.text=“foo”,container、cell或
它只是作为一个可选项,您可以将其设置为字符串或nil。它们都不会使应用程序崩溃,除非你在变量为nil时打开变量而不捕获它。
如果链中的任何内容是可选的,那么整个链(或者至少是可选之后的所有内容)有点像短路
&&
操作符,当到达第一个假值时停止,可选链将在到达第一个零值时停止
因此,在极端情况下,如
container?.cell?.textLabel?.text=“foo”
,container、cell或textLabel中的任何一个都可能为零。如果其中任何一个为非零,则该语句实际上是不可操作的。只有当整个链为非零时,才会发生赋值。为完整起见,除了@gregheo answer:
可以修改可选链接表达式的未包装值,方法是改变值本身,或指定给值的一个成员。如果可选链接表达式的值为nil
,则不计算赋值运算符右侧的表达式
引自ES12中的,您可以通过逻辑空赋值来实现这一点
cell.textLabel?.text ??= "Test"
因此,只有当左侧表达式不为null时,才会发生赋值
这就像你想做的一样
if (cell.textLabel?.text) cell.textLabel.text = "Test"
if (cell.textLabel?.text) cell.textLabel.text = "Test"