Firebase ChildAdded Observer正在检索不存在的数据

时间:2018-04-30 23:55:44

标签: swift firebase firebase-realtime-database observers

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

 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()中。提前致谢

1 个答案:

答案 0 :(得分:0)

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

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