gpt4 book ai didi

ios - 使用 firebase 中添加的 child 从 firebase 获取数据

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

我正在尝试使用observe(.childAdded)检索一些数据,以便获取我的项目的新“帖子”并将其正确添加到表格 View 中。我实际上使用这个函数得到了我需要的结果。

        databaseHandle = ref?.child("Posts").observe(.childAdded, with: { (snapShot) in

let post = snapShot.value as? String
if let actualPost = post {

self.postData.insert(actualPost, at: 0)
self.tableView.reloadData()
}

})

但它仅适用于在 FireBase 中具有值的子项:

*Root
*Posts
*ChildByAutoId: "post text value"

实际上我想要一个具有如下属性的 child :

*Root
*Posts
*ChildByAutoId
-Text: "post text value"
-UserId: "userId"
-CreationDate: "date"
-PostId: "PostId"
-Likes: Int
-Author: "name"

我希望获得与使用 .observe(.childAdded) 相同的结果,但我无法做到这一点。我发现它当前工作的唯一方法是:

    func recuperarData(){
let ref = self.ref

ref?.child("Posts").queryOrderedByKey().observeSingleEvent(of: .value, with: { (snapShot) in
if let posts = snapShot.value as? [String : AnyObject]{
for (_, value) in posts{
let post = Posts()

if let autor = value["Author"] as? String ,let likes = value["Likes"] as? Int, let fecha = value["CreationDate"] as? String, let postId = value["PostID"] as? String, let texto = value["Text"] as? String, let userID = value["UserId"] as? String {
post.autor = autor
post.likes = likes
post.fecha = fecha
post.PostId = postId
post.texto = texto
post.UserId = userID
self.posts.append(post)
}
}
self.tableView.reloadData()
}
})
ref?.removeAllObservers()
}

但这只会在每次“重新加载”表格 View 时检索所有数据一次,并且不会按照我想要的顺序正确添加帖子。

是否有人知道使用 .observe(.childAdded) 获取此数据的正确方法,以便我可以自动升级表格 View 。

我正在使用 Xcode 8.2.1 和 swift 3谢谢

最佳答案

令我震惊的是,没有人能够在您的原始 .childAdded 中指出这个问题。功能。

let post = snapShot.value as? String是问题所在。

Firebase 数据库是键值对,因此您不能将整个结果转换为字符串。您通过在执行 .value 时将其转换为字典来解决此问题。在.childAdded中做同样的事情功能。

我有一个类似的answer解释 Firebase 中的字典处理。

关于ios - 使用 firebase 中添加的 child 从 firebase 获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44131166/

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