首页 > 解决方案 > 在展开可选值时遇到 nil 问题

问题描述

我正在尝试从 firebase 中检索 postImageUrl,但由于某种原因,我在使用 postImageUrl 解包 nil 时收到错误消息。如何使此代码正常工作,以便我可以从 firebase 检索图像 url 而不会导致崩溃?

代码截图

Firebase 数据库

标签: swiftfirebase

解决方案


通常,您应该避免使用!force-unwrap 运算符,除非您可以 100% 证明该值永远不会是nil,这应该是极少数情况下(通常在加载应用程序包中包含的文件时)。这显然不是这里的情况,因为该值为nil,因此您应该使用if letguard let解包该值,处理它的情况nil,或者您可以使用??运算符提供默认值,如下所示:

doSomethingWith(foo ?? "this string gets passed if foo is nil")

根据您的对象应该做什么,Post它也可能实际上适合包含nil. imageURL在这种情况下,您可能只想通过在其类型的末尾imageURL添加一个来将其属性声明为可选:?

struct Post: Codable {
    ...
    let imageURL: URL? // or String? if that's what it is
    ...
}

在这种情况下,您将在imageURL稍后使用该属性时打开该属性。


推荐阅读