Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Uitableview Swift作业左侧使用的可选链接_Uitableview_Swift_Optional_Optional Chaining - Fatal编程技术网

Uitableview Swift作业左侧使用的可选链接

Uitableview Swift作业左侧使用的可选链接,uitableview,swift,optional,optional-chaining,Uitableview,Swift,Optional,Optional Chaining,当在赋值语句的左侧使用可选链接时,这意味着什么?如果可选变量为nil,应用程序会崩溃吗 e、 g 它只是作为一个可选项,您可以将其设置为字符串或nil。它们都不会使应用程序崩溃,除非你在变量为nil时打开变量而不捕获它。 如果链中的任何内容是可选的,那么整个链(或者至少是可选之后的所有内容)有点像短路&&操作符,当到达第一个假值时停止,可选链将在到达第一个零值时停止 因此,在极端情况下,如container?.cell?.textLabel?.text=“foo”,container、cell或

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

e、 g


它只是作为一个可选项,您可以将其设置为字符串或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"