Получите данные из Firebase и отобразите в TableViewCell как сообщение - PullRequest
0 голосов
/ 27 ноября 2018

Я не знаю, как получить данные из Firebase в мой UITableView.Все учебники, которые я смотрел, использовали Аутентификацию Firebase, в их видео все работало нормально, но при попытке воспроизвести это, я потерпел неудачу.Вот что я попробовал:

Сначала есть моя структура базы данных:

Firebase Database structure

А вот мой код:

func observePosts(){
    let postsRef = Database.database().reference().child("posts")
    postsRef.observe(.value, with: { snapshot in

        var tempPosts = [Post]()

        for child in snapshot.children {
            if let childSnapshot = child as? DataSnapshot,
            let dict = childSnapshot.value as? [String:Any],
            let text = dict["text":""] as? String
            {
                let post = Post(text: text)
                tempPosts.append(post)
            }
        }

        self.posts = tempPosts
        self.tableView.reloadData()
    })
}

Итак, мой вопрос: как мне получить, например, сообщение из такой структуры базы данных?

Ответы [ 2 ]

0 голосов
/ 27 ноября 2018

Если вы следовали инструкциям YouTube, есть большая вероятность, что вы не изменили свои правила Firebase, чтобы отразить это на пользователях, не прошедших проверку подлинности.Если вы этого не сделали, Firebase игнорирует каждый запрос на чтение / запись.Чтобы включить это, отредактируйте свои правила пожарной базы с помощью:

img

Установите для правил значение ИСТИНА

{
  "rules": {
    ".read": true,
    ".write": true
  }
}

Однако есть ещеЭто.Не делайте так, если вы не в тестовом режиме.У Google есть несколько хороших документов об этом:

Посетите https://firebase.google.com/docs/database/security, чтобы узнать больше о правилах безопасности.

0 голосов
/ 27 ноября 2018
let text = dict["text":""] as? String {
   let post = Post(text: text)
   tempPosts.append(post) }

Это неправильно.Нет ничего похожего на dict["text":""].Во-первых, у вас нет данных для ключевого слова text, во-вторых, вы не пишете :""], вы можете назвать dict ["text"].

Я думаю, что ваше решение - let text = dict["title"] as? String.Но ваша архитектура не так.Вы можете объявить только одно ключевое слово.название 1, название 2 неправильно.Вы должны установить только заголовок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...