gpt4 book ai didi

swift - Firebase 将新键/值添加到现有数据库而不会使 xcode 崩溃

转载 作者:行者123 更新时间:2023-11-30 11:56:14 25 4
gpt4 key购买 nike

`    let query = ref?.child("Reviews").queryOrdered(byChild: "UserID").queryEqual(toValue: myUser.userId)
query?.observeSingleEvent(of: .value) { snapshot in
for child in snapshot.children {
let snap = child as! DataSnapshot
let dict = snap.value as! [String: Any]
let uid = dict["UserID"] as! String
let review = dict["Body"] as! String
let rating = dict["Rating"] as! String
let titleID = dict["TitleID"] as! String
let reviewID = dict["ReviewID"] as! String

let ratingID = dict["RatingID"] as! String
`

在对数据库进行 ratingID 调用时发生错误。它解开零。

我正在尝试使用新的键/值调整现有的 Firebase 数据库。然后,我尝试在 TableView 中显示条目,但由于 unwrap 返回 nil 而发生崩溃。我知道为什么会发生这种情况,这是因为以前的数据没有我想要包含在未来节点中的新键/值。我尝试过很多不同的事情,例如 if let 和 Guard let ,但没有太多运气。如何添加新的键/值并且仍然让表格 View 读取没有新值的条目?

我包含当前节点的图像,并且我想向该节点添加“RatingsID”。当我这样做时,我收到 unwrap nil 错误。

新键/值之前的数据库节点

enter image description here

最佳答案

您的代码非常接近,只需保护代码以防 ratingID key 不存在。

所以改变

let ratingID = dict["RatingID"] as! String

let ratingID = dict["RatingID"] as! String ?? ""

因此,如果 RatingID 节点不存在,您将把 ratingID 设置为空字符串(或任何您想要的字符串)

您还可以将其编码为仅在节点存在(而不是零)时对该键的值进行操作

if let someVal = dict["xxx"] {
//do something with someVal
} else {
print("xxx node wasn't found")
}

这是一个完整的示例:我们正在从 messages 节点读取一些消息,其中一些有 test_key 节点,有些则没有。对于那些不这样做的人,默认字符串被分配给测试

let postsRef = self.ref.child("messages")
postsRef.observe(.childAdded) { snapshot in
let dict = snapshot.value as! [String: Any]
let msg = dict["msg"] as! String
let test = dict["test_key"] ?? "default string"
print(msg, test)
}

关于swift - Firebase 将新键/值添加到现有数据库而不会使 xcode 崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47786299/

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