обновление значений с помощью firebase

#swift #firebase #firebase-realtime-database

#swift #firebase #firebase-база данных в реальном времени

Вопрос:

У меня есть ссылка на firebase, и я хочу обновить ссылку на firebase, но мое приложение выходит из строя, когда я его пробую Could not cast value of type '__NSCFBoolean' (0x2106be078) to 'NSDictionary'

моя ссылка выглядит следующим образом

 Database.database().reference(forLastMsg: championId).child(toID).updateChildValues(withValues)
                                Database.database().reference(forLastMsg: toID).child(championId).updateChildValues(withValues)
  

даже использование setValue также приводит к сбою приложения.

На самом деле я постоянно просматриваю ссылки, которые были обновлены so на valueChange

 for snapshot in snapshot.children {
                        let receivedMessage = (snapshot as! DataSnapshot).value as!
                            NSDictionary
...
  

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

Комментарии:

1. опубликовать структуру базы данных

2. Я добавил структуру

3. можете ли вы показать ссылку на код, который вы прослушиваете, также предпочтительно со статическими именами, чтобы следовать за ним вместо ваших динамических переменных

Ответ №1:

Вы должны обновить его таким образом

 let updateDatabase = databaseReference.child("something").child(someId)

    let data = [
        "boolValue": myBoolean,
        "dateUpdated": Date().toSeconds()
        ] as [String : Any]

    updateDatabase.updateChildValues(data)
  

Ответ №2:

Для обновления

 let newVal = //// some dictionary 
 // you may add komal_xyz as dynamic according to your logic
Database.database().reference().child("komal_xyz/(id)").updateChildValues(newVal) { (err, ref) in

}
  

Для прослушивания

 Database.database().reference().child("komal_xyz/(id)").observe(.value) { (ref) in
   //  

   let res = ref.value as! [String:Any]    
}