Функция наблюдателя загружает как новые, так и более старые данные для базы данных Firebase.

Я использую функцию наблюдателя в своем приложении чата в классе myChatRoomScene для наблюдения за добавлением нового сообщения и добавления его в массив allMsgs. Я вызываю эту функцию в viewDidLoad()Я использую контроллер панели вкладок в своем приложении, когда я вернулся в myChatRoomScene после посещения другой вкладки, мое количество сообщений удвоилось. Функция:

    private func observeMessages(){
    messageRef = userRef.child(currentUserId!).child("messages").child(contactedUserId)
    msgRef = userRef.child(contactedUserId).child("messages").child(currentUserId!)

    let messageQuery = messageRef.queryLimited(toLast:25)
    newMessageRefHandle = messageQuery.observe(.childAdded, with: { (snapshot) -> Void in
        let messageData = snapshot.value as! Dictionary<String, Any>

        if let isSender = messageData["is Sender"] as! String!, let text = messageData["text"] as! String!, text.characters.count > 0 {

            let objUser = userMsgs()
            objUser.userType = isSender
            objUser.msg = text
            self.appDel.allMsgs.append(objUser)
            self.tableOutlet.reloadData()
        }
        else {
            print("Error! Could not decode message data")
        }
    })
}

Картинка перед посещением другой вкладки

введите описание изображения здесь

Картина после посещения другой вкладки

введите описание изображения здесь

0 ответов

Другие вопросы по тегам