У меня небольшая проблема с функциональностью Firebase при извлечении данных и выходе из контроллера представления до фактической загрузки данных.Я понял, что если я нажму кнопку «Назад» в контроллере ДО того, как фактические данные будут загружены в VC, в моей консоли произойдет сбой, равный *** Terminating app due to uncaught exception 'InvalidPathValidation', reason: '(child:) Must be a non-empty string and not contain '.' '#' '$' '[' or ']''
.Это происходит только в том случае, если я пытаюсь выйти слишком быстро в том случае, если пользователь хочет перейти куда-то еще до загрузки данных, в противном случае каждая функция работает отлично.
Я уже удалил наблюдателей для двух из моих функций Firebaseв viewDidDissapear, который помогает, так как вы не хотите оставлять наблюдателя открытым, но это не решает мою проблему сбоя.У меня также есть прогресс HUD, который показывает и удаляет после загрузки данных, но безуспешно.Ниже приведена 1 из моих функций Firebase, которые, например, извлекают данные.
func retrieveMessages() {
let ref = Database.database().reference().child("locations").child(titleString)
ref.observe(.childAdded) { (snapshot) in
if snapshot.exists() {
let snapshotValue = snapshot.value as! Dictionary<String,String>
let text = snapshotValue["message"]!
let sender = snapshotValue["username"]!
let img = snapshotValue["userImage"]!
let upvote = snapshotValue["upvote"]!
let timestamp = snapshotValue["timestamp"]!
let message = ChatMessage()
message.msgTimestamp = timestamp
message.messageBody = text
message.sender = sender
message.chatImageURL = img
let upvoteInt = Int(upvote)
message.upvoteString = upvoteInt!
self.chatMessageArray.append(message)
self.chatTable.reloadData()
self.chatRoomScrollToBottom(animated: true)
}
}
}
Моя следующая гипотеза - отключить кнопку «Назад» до полной загрузки данных?Это решило бы эту проблему, но мне интересно, есть ли способ остановить эту функцию или любую функцию FB, которую я запускаю, если я немедленно нажимаю кнопку возврата?Цени любую помощь.