【发布时间】:2021-05-19 10:42:17
【问题描述】:
支付的可选布尔值为零。 它被分配了一个值。 值被打印出来。 下一行代码我有一个 else if。 该值为零。 问题:如何以及为什么?
【问题讨论】:
-
复制/粘贴代码,这样更好。日志的输出是什么?如果您有多个文档,它只是最后一个值(因为它被覆盖)?
-
如前所述,您需要发布代码,而不是图像。话虽如此,在我看来,您不是在打印
paid,而是在打印dict["paid"]。 -
您需要以minimal reproducible example 的形式将所有相关代码作为文本,使用正确的代码格式 - 而不是屏幕截图 - 以 minimal reproducible example 的形式包含所有相关代码作为文本主题。
-
可选的 Bool 支付为零。它被分配了一个值 - 不,它没有。为此,您需要一个 nil 合并运算符 -
paid = dict["paid"] as? Bool ?? true。但是,由于这是在循环中,它将由循环一遍又一遍地分配,并且始终是循环的最后一次迭代将其设置为的任何值。此外,强制解包一个可选项通常是不明智的,因此paid!告诉您的代码您保证它不会为 nil,但正如您所见,它可以与您的代码一起使用。
标签: ios swift firebase optional