swift - Firebase ChildAdded 观察者正在检索不存在的数据

标签 swift firebase firebase-realtime-database observers

我正在使用一个 child 添加的观察者来检查用户在使用我的应用程序时是否收到新通知...

 func newLikeNotificationObserver() {
    notifHandle = Database.database().reference().child("notifications").child(FirebaseDatabase.system.CURRENT_USER_ID).observe(DataEventType.childAdded, with: { (snapshot) in
        if !snapshot.exists() {
            print("ERROR")
            return
        }
        let id = snapshot.key
        print(id)
        if let dict = snapshot.value as? Dictionary<String, Any>  {
            print("ADDED TO LIST")
            let notif = Notifications(notifID: id, data: dict)
            self.notifications.insert(notif, at: 0)
            self.collectionView.reloadData()
        }
    })
}

我遇到的奇怪问题是,尽管当用户喜欢他/她自己的帖子时没有数据写入我的数据库,但触发了观察者并将通知插入到包含实际用户通知的数组中。当我打印出 notif-ID 以查看是否可以在我的数据库中找到它时,它无处可寻。任何人都可以看到我可能出错了吗?

此外,我正在删除 deinit 方法中的观察者并将其添加到 viewdidload() 中。提前致谢

最佳答案

放置事件观察者的正确位置是在 viewDidAppear 中,在 viewWillDisappear 中移除它们。

我认为很可能是之前的观察者没有被删除并且返回了错误的数据。重新启动计算机并查看它是在应用程序的初始运行时发生,还是仅在后续启动时发生

关于swift - Firebase ChildAdded 观察者正在检索不存在的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50109738/

相关文章:

ios - UIButton 中的 UIBezierPath 圆角

javascript - 从表单将文件添加到 vue.js 中的 firebase 存储

java - 如何检查/访问与当前 Activity 不同的 Activity 的生命周期?

java - 如何按降序检索 firebase 数据

ios - 为什么我会收到此委托(delegate)代码的错误?

ios - 如何在 Xcode 中仅将按钮的两个角倒圆角?

swift - 准备好在多个 tableviewController 之间传递数据了吗?

javascript - Firebase 何时加载数据?

java - 在 Firestore 中显示用户的照片

javascript - Firebase-javascript API 仅在一个触发器中获取满足条件的数据节点。还会为每个查询建立新的 TCP 连接吗?