从 firebase 函数转换为 String 和 Bool

Casting to String and Bool from firebase function

我有一个 firebase 函数,它 returns 一个对象,起初它返回对象中的一个项目,它只是一个布尔值。当它从 swift 应用程序中的 .call 函数到达时,它是一个 1 或一个 0。这在将字符串转换为布尔值时很好,因为它只会变成 true 或 false。但是,从 Firebase 函数在此对象上添加更多值并尝试将字符串转换为字符串。它似乎打破了我的 Bool 以及 String 也没有被抛弃。在文档中似乎他们总是归结为任何。我知道这可能是一个非常简单的问题,但我无法回答。

guard let rawTime = (result?.data as? [String: Bool])?["serverTime"] else { return }
print(rawTime)

guard let rawString = (result?.data as? [String: String])?["example"] else { return }
print(rawString)

我的来自 firebase 函数的对象是:

Optional({
    example = lala;
    serverTime = 1;
})

您的数据包含 1lala 作为值,因此无法将其转换为 [String: Bool][String: String]。 Swift 字典的值应该具有相同的类型。 首先将其转换为 [String: Any],然后将 rawTimeAny 转换为 Int,将 rawStringAny 转换为 String


guard
  let rawTime = (result?.data as? [String: Any])?["serverTime"],
  let time = rawTime as? Int
else { return }
print(time)

guard
  let rawString = (result?.data as? [String: Any])?["example"],
  let string = rawString as? String
else { return }
print(string)