我面临 2 天的 firebase 问题,无法处理。
这是我的实时数据库
我正在获取内容、发布日期、来源等,但标签。
我想获得标签子项的“0:100”值。这是我的代码:
你能帮帮我吗?
databaseRef.child("posts").queryOrderedByKey().observe(.childAdded, with: { (snapshot) in
if let valueDictionary = snapshot.value as? [AnyHashable:String] {
let newsTitle = valueDictionary["title"]
let newsImage = valueDictionary["imageUrl"]
let publishData = valueDictionary["publishData"]
let content = valueDictionary["content"]
let tags = valueDictionary["tags"]
self.news.insert(newsStruct(newsTitle: newsTitle, newsImage: newsImage, publishData: publishData, content: content, tags: tags), at: 0)
self.tableView.reloadData()
self.tableViewTagsNews.reloadData()
}
})
最佳答案
假设您有多个这样的帖子
posts
0
tags
0: 100
1: 200
1
tags
0: 100
1: 200
下面的代码将遍历每个帖子,一次一个,读取内容,然后读取标签并将它们输出到控制台。
func readPostTags() {
let postsRef = self.ref.child("posts")
postsRef.observe(.childAdded, with: { snapshot in
let content = snapshot.childSnapshot(forPath: "creation_date").value as! String
let tagsSnap = snapshot.childSnapshot(forPath: "tags")
let allChildTagsSnap = tagsSnap.children.allObjects as! [DataSnapshot]
for tagChildSnap in allChildTagsSnap {
let key = tagChildSnap.key
let value = tagChildSnap.value as! Int
print(content, key, value)
}
})
}
和输出
0 100
1 200
0 100
1 200
请记住,.childAdded 将在该节点上留下观察者并通知您进一步添加。
关于swift - 如何从 Swift 5 上的 firebase 实时数据库检索子数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55899804/