从 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;
})
您的数据包含 1
和 lala
作为值,因此无法将其转换为 [String: Bool]
或 [String: String]
。
Swift 字典的值应该具有相同的类型。
首先将其转换为 [String: Any]
,然后将 rawTime
从 Any
转换为 Int
,将 rawString
从 Any
转换为 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)
我有一个 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;
})
您的数据包含 1
和 lala
作为值,因此无法将其转换为 [String: Bool]
或 [String: String]
。
Swift 字典的值应该具有相同的类型。
首先将其转换为 [String: Any]
,然后将 rawTime
从 Any
转换为 Int
,将 rawString
从 Any
转换为 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)