gpt4 book ai didi

ios - 按定义的顺序从 Firebase 加载信息

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

我正在向 Firebase 数据库发布一些信息

 let bookObject: Dictionary<String, Any> = [
"uid": uid,
]
FIRDatabase.database().reference().child("posts").child(key).setValue(bookObject)

我想检索tableView中的数据

func loadData(){
if (FIRAuth.auth()?.currentUser) != nil{

FIRDatabase.database().reference().child("posts").child(self.loggedInUser!.uid).observeSingleEvent(of: .value, with: { (snapshot:FIRDataSnapshot) in

let loggedInUserData = snapshot
if let postsDictionary = snapshot .value as? [String: AnyObject] {
for post in postsDictionary {
self.posts.add(post.value)
}
self.TableView.reloadData()


}})}
}

但是,这有效,帖子会随机加载到 TableView,有时新帖子会发布到 TableView 的顶部,有时会发布到 TableView 的底部。我该怎么做才能使新帖子显示在上一个单元格的顶部。

最佳答案

您需要为每个帖子添加时间戳,然后根据时间戳对帖子进行排序。您没有发布您的 TableView 是如何构建的,但我建议使用由多个帖子组成的 tableArray ,这些帖子是一个自定义类 Post ,它具有Firebase 中帖子的所有属性。然后,您可以通过执行 tableArray.sort({$0.date > $1.date}) 来排列帖子,其中 date 是 Post 中包含以下字符串的变量之一:创建时的时间戳。您可能想在重新加载 TableView 数据之前对 tableArray 进行排序。

然后您可以使用以下内容填充 TableView

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = //dequeueResuableCell

//retrieve data from the cell's corresponding post
let postCreator = tableArray[indexPath.row].creatorUID
let postContent = tableArray[indexPath.row].content
...

//populate the cell using the above data
...
}

由于 tableArray 中的帖子按时间顺序排列,因此 TableView 中的帖子也将按时间顺序排列。

关于ios - 按定义的顺序从 Firebase 加载信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44879983/

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