Как правильно добавить данные в массив?Swift4 - PullRequest
0 голосов
/ 18 октября 2018

Я пытался извлечь некоторые данные из базы Firebase и сохранить их в массивах.Но у меня есть проблема, когда я пытаюсь добавить данные.

Я могу хранить данные в массивах только в замыкании и вне замыкания, я внезапно теряю все значения внутри массивов,Почему это происходит?Пожалуйста, помогите мне найти то, что мне не хватает ...

        var names = [String]()
        var txts = [String]()
        var imgUrls = [String]()

Database.database().reference().child("Posts").child("dummy").observe(.value) { (snapshot) in
                guard let snapshots = snapshot.children.allObjects as? [DataSnapshot] else {
                    return
                }
                for snap in snapshots {
                    let autoId = snap.key as String
                    Database.database().reference().child("Posts").child("dummy").child(autoId).observe(.value, with: { (snapshot) in
                        guard let data = snapshot.value as? [String: Any] else {return}

                        //name
                        guard let name =  data["name"] as? String else {return}
                        self.names.append(name)
                        //image
                        guard let imgUrl = data["image"] as? String else {return}
                        self.imgUrls.append(imgUrl)
                        //txt
                        guard let txt = data["text"] as? String else {return}
                        self.txts.append(txt)

                        print(self.names) //this returns all data from firebase
                        print(self.imgUrls) //this returns all data from firebase
                        print(self.txts) //this returns all data from firebase
      }
                        print(self.names) //this returns empty array
                        print(self.imgUrls) //this returns empty array
                        print(self.txts) //this returns empty array
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...