gpt4 book ai didi

ios - 使用 firebase 检索数据不返回任何内容

转载 作者:行者123 更新时间:2023-11-28 08:08:52 24 4
gpt4 key购买 nike

我正在尝试从 firebase 加载一些数据以在我的 ios 应用程序中使用,但似乎整个观察方法都没有执行。

这是 firebase 上的数据:

{
"tips" : {
"Nog een" : {
"category" : "Drinking",
"description" : "Dikke test jooo",
"name" : "Nog een",
"score" : 0
},
"testtip" : {
"category" : "Going Out",
"description" : "reteketet keta pret",
"name" : "testtip",
"score" : 0
}
}
}

这是我的加载代码:

let tipsRef = Database.database().reference().child("tips")
var tips: [Tip] = []
tipsRef.observe(.value, with: { (snapshot) in
if !snapshot.exists(){
print("not found")
}
else{
for item in snapshot.children{
let tip = Tip(snapshot: item as! DataSnapshot)
tips.append(tip)
}
self.tipsArray = tips
}
})

如果 !snapshot.exists(){ 未到达该行。

在同一个类中,我将这些对象插入到数据库中,这没有任何问题。

let tipRef = Database.database().reference(withPath: "tips")
let newTipRef = tipRef.child(newTip.name)
newTipRef.setValue(newTip.toAnyObject())

我不知道为什么这不起作用,在类似的项目中,几乎相同的代码确实有效...

更新Nirav D 的回答帮助我修复了它,但现在我需要一个新的“提示”初始化,我不知道该怎么做。我添加了我正在使用的 init。

let tipsRef = Database.database().reference().child("tips")
var tips: [Tip] = []
tipsRef.observe(.value, with: { (snapshot) in
if let dictionary = snapshot.value as? [String:[String:Any]] {
for item in dictionary {
let tip = Tip(dictionary: item)
tips.append(tip)
}
}
self.tipsArray = tips
})



convenience init(snapshot: DataSnapshot){
self.init()
let snapshotValue = snapshot.value as! [String:AnyObject]
self.name = snapshotValue["name"] as! String
self.description = snapshotValue["description"] as! String
self.category = snapshotValue["category"] as! String
self.score = snapshotValue["score"] as! Int
}

最佳答案

关闭 observe 将调用 async 意味着它会在您收到响应时调用后者。您也可能需要访问 snapshot.value 而不是 snapshot.children。如果您在 tableView 中显示此数据,则需要在 for 循环之后重新加载 tableView

if let dictionary = snapshot.value as? [String:[String:Any]] {
for item in dictionary {
let tip = Tip(dictionary: item.value)
tips.append(tip)
}
//Reload your table here
self.tableView.reloadData()
}

在你的 Tip 类中创建一个如下所示的 init

init(dictionary: [String:Any]) {
self.name = dictionary["name"] as! String
self.description = dictionary["description"] as! String
self.category = dictionary["category"] as! String
self.score = dictionary["score"] as! Int
}

关于ios - 使用 firebase 检索数据不返回任何内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44325314/

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