Поток пропустить базу данных DataSnapshot (FireBase) - PullRequest
0 голосов
/ 12 января 2019

Я пытаюсь добавить в свой массив «Посты» из базы данных, но похоже, что основной поток пропускает мои инструкции и переходит прямо к numberOfRowsInSection и вылетает, потому что массив равен нулю!

Тема 1: Неустранимая ошибка: неожиданно обнаружен ноль при развертывании Необязательное значение

Есть идеи, как заставить поток выполнить сначала мои команды добавления в массив?

Вот код:

var pods: [Pod]!

override func viewDidLoad() {
    super.viewDidLoad()

    loadPosts()
}

func loadPosts() {
   Database.database().reference().child("Posts").observe(.childAdded) { (DataSnapshot) in
        if let dict = DataSnapshot.value as? [String: Any] {
            let title = dict["title"] as! String
            let description = dict["description"] as! String
            let imageURL = dict["image"] as! String
            let pod = Pod(image: imageURL, title: title, description: description)
            self.pods.append(pod)
            self.tableView.reloadData()
        }
    }
}

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return pods.count
}

1 Ответ

0 голосов
/ 12 января 2019

Ваш текущий массив данных всегда будет nil, так как вы никогда не назначаете его.

Итак, вместо этого создайте свой массив источника данных как пустой массив Pod объектов

var pods = [Pod]()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...