首页 > 解决方案 > 数据在数组中出现两次 - Swift(SwiftUI)

问题描述

class DataHandler: ObservableObject{
@Published var HomePagePosts = [Post]()
@Published var loggedInUser = UserObject()

init() {
    self.loadHomePagePosts()
}

func loadHomePagePosts(){
    let ref = Database.database().reference()
    
    ref.child("Posts").observe(.value) { post in
        for entry in post.children.allObjects as! [DataSnapshot] {
            guard let dict = entry.value as? [String: AnyObject] else {return}
            self.HomePagePosts.append(handlePostDictionary(dict))
            self.HomePagePosts.sort(by: {$0.date!.compare($1.date!) == .orderedDescending})
        }
    }
}

下面是我的主页加载帖子的代码

@ObservedObject var dataHandler: DataHandler
            ForEach(self.dataHandler.HomePagePosts, id: \.id, content:{
                post in
                EntryCell(currentPost: post)
                
            })

这是我的主要数据处理程序。本质上,问题是如果我在firebase上发布到我的服务器,然后我转到我的主页,它将重新渲染帖子并将其添加到帖子数组(HomePagePosts)中,复制除新帖子之外的所有帖子。我尝试在函数开始时将数组设为空白,但现在单击主页时只能看到一篇文章。非常感谢您花时间阅读问题,有什么建议吗?

标签: swiftfirebasefirebase-realtime-databaseswiftui

解决方案


推荐阅读