我正在使用一个 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/