Firebase ChildAdded Observer извлекает данные, которых нет - PullRequest
0 голосов
/ 01 мая 2018

Я использую добавленного наблюдателя, чтобы проверить, получает ли пользователь новое уведомление при использовании моего приложения ...

 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 голосов
/ 01 мая 2018

Правильное место для размещения наблюдателей событий находится в viewDidAppear и удалите их в viewWillDisappear.

Я думаю, вполне вероятно, что предыдущий наблюдатель не удаляется и возвращает неверные данные. перезагрузите компьютер и посмотрите, происходит ли это при первом запуске приложения или только при последующих запусках

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...