iOS не может передать все узлы из firebase в Tableview в Xcode

#ios #swift #uitableview #firebase #firebase-realtime-database

#iOS #swift #uitableview #firebase #firebase-realtime-database

Вопрос:

итак, я пытался передать данные / значение моей базы данных Firebase в мою tableviewcell

Это сработало, но в моем tableview отображается только один, в то время как в моей базе данных у меня есть 5 menukeys.

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

  DataService.ds.REF_MENUS.observe(.value, with: { (snapshot) in


        if let snapshot = snapshot.children.allObjects as? [FIRDataSnapshot]
        {
            print ("(snapshot)")

            for snap in snapshot {
                print("SNAP: (snap) ")


                if let menuDict = snap.value as? Dictionary<String, String> {

                    print ("SNAP(menuDict)")

                   let key = snap.key
                   let menu = menuContnet(menuKey: key, menuData: menuDict)

                    self.menus.append(menu)
                    self.WeekMenu.reloadData()
                }
            }
        }
    })
  

Я выполнил некоторую печать, пытаясь отладить.

в print("SNAP: (snap) ") я получил все 5 ключей с их дочерними элементами из базы данных

но в print ("SNAP(menuDict)") остался только один ключ с дочерними элементами

Я думаю, что именно эта строка вызывает проблему

разве menuDict не должен быть массивом со всеми ключами и его значением?

мои ключи — это просто строки, я пытался сделать if let menuDict = snap.value as? Dictionary<String, AnyObject> , но на самом деле это не сработает

может кто-нибудь, пожалуйста, указать, какая часть вызывает проблему?

Спасибо!

Обновить

Я изменяю это

 if let menuDict = snap.value as? Dictionary<String, String>
  

Для

  if let menuDict = snap.value as? Dictionary<String, AnyObject>
  

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

Обновить

сбой, подобный этому скриншоту

это меня убивает…. Я пытался разобраться в этом в течение 3 дней:(

Обновить

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

НО здесь возникает другая небольшая проблема :

если я изменяю значения в базе данных Firebase и снова запускаю приложение, оно улавливает новое значение, которое я изменяю, но показывает старое значение в моей tableViewCell

интересно, как это происходит @_@

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

1. В какой именно строке происходит сбой? И укажите текущую структуру БД в виде текста, а не в виде изображения

2. Unexpectedly found nil while unwrapping an Optional value Я знаю, что это действительно сложное сообщение для понимания, но это означает, что вы принудительно развернули необязательное, которое есть nil . Поэтому найдите строку, в которой вы принудительно разворачиваете необязательный параметр, и не делайте этого.

3. Привет, я обновляю скриншот

4. Хорошо, итак, в моей базе данных firebase я присвоил значение со всеми числами, такими как «45645643», и это не сработает. пока я даю значение типа «5436fgfh52435», это просто сработало…

5. Эй, ребята, спасибо, что помогли мне! Проблема почти решена, осталось решить небольшую проблему, я обновил вопрос и, пожалуйста, любезно взгляните!