gpt4 book ai didi

swift - 如何让 firebase 子快照值恢复工作?

转载 作者:搜寻专家 更新时间:2023-11-01 06:55:34 24 4
gpt4 key购买 nike

var test = String()

func fetchUser() {
let currentUserUid = Auth.auth().currentUser?.uid

Database.database().reference().child("users").child(currentUserUid!).child("test").observeSingleEvent(of: .value) { (snapshot) in

self.test = snapshot.value as! String
})
}

我想将快照值添加到我的变量中。

但它正在崩溃,尽管我的 firebase 概念非常完美并且适合代码。

可能是什么原因?

控制台结构:

  • 用户
    • iBagi96IMGbd2k6wUtXjPs0gmNq1。 <--- currentUserUid
      • 测试:测试值

我得到的错误:无法将类型“NSNull”(0x10dd86de0)的值转换为“NSString”(0x10b2485d8)。

此外,我想补充一点,我曾经将 child 的名字从“test”重命名为 sth else,并且它在短时间内有效。然后错误再次发生。

最佳答案

问题中的代码中有一些错字,但它是正确的。

最大的问题是可选值的处理 - 当您应该将它们视为可选值以保护您的代码时,它们却被强制解包。

这样

let currentUserUid = Auth.auth().currentUser?.uid

会更好

guard let user = Auth.auth().currentUser else {return}
let uid = user.uid

但是使用您的代码,这里有一个更新,它以字符串形式从该节点读取值并将其打印出来。

var test = String()

func readUserString() {
let currentUserUid = "iBagi96IMGbd2k6wUtXjPs0gmNq1"
let usersRef = self.ref.child("users")
usersRef.child(currentUserUid).child("test").observeSingleEvent(of: .value, with: { snapshot in
let test = snapshot.value as! String
print(test) //prints "testValue"
})
}

关于swift - 如何让 firebase 子快照值恢复工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53639345/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com