【发布时间】:2018-10-11 02:14:32
【问题描述】:
我正在使用添加的子观察者来检查用户在使用我的应用程序时是否收到新通知...
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()
}
})
}
我遇到的奇怪问题是,尽管当用户喜欢他/她自己的帖子时没有将数据写入我的数据库,但观察者被触发并且通知被插入到包含实际用户通知的数组中。当我打印出通知 ID 以查看是否可以在我的数据库中找到它时,找不到它。任何人都可以看到我可能出错了吗?
另外,我正在删除 deinit 方法中的观察者并将其添加到 viewdidload() 中。提前致谢
【问题讨论】:
-
确实没有足够的信息来回答这个问题;您声明代码在 viewDidLoad 中调用 - 哪个视图?它是一个多次使用的视图吗?您在应用程序的其他任何地方是否有观察者或 Firebase 相关代码? notifHandle 是类变量还是可能包含在其他地方的单例中?视图是否真的在某个时候被忽略了?
标签: swift firebase firebase-realtime-database observers