Функция наблюдателя загружает как новые, так и более старые данные для базы данных 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")
}
})
}
Картинка перед посещением другой вкладки
Картина после посещения другой вкладки