从Firebase读取数据并保存到数组中(Swift)

我一直在围绕一些似乎非常简单的事情,但我无法弄明白。 我只是想从Firebase读取数据并将其保存在数组中,以便我可以在我的应用程序中使用它。 我知道如何读取数据,因为以下内容可供我在控制台中打印出来:

var ref = Firebase(url: "") ref.observeEventType(.ChildAdded, withBlock: { snapshot in print(snapshot.value.objectForKey("title")) }) 

我尝试了一些这些方法来保存到一个数组,但我不能让它工作,因为它没有直接解决我更简单的问题。

将Firebase数据添加到数组中

如何从Firebase查询中保存数据

谢谢你的帮助!

这就是我检索值并使用Firebase附加到数组的方法。 REF_POSTS是对Firebase中我的post对象的基于URL的引用。 请记住,firebase对象本质上是字典,您需要从中解析数据并将其分配给变量才能使用它们。

  var posts = [Post]()// put this outside of viewDidLoad //put the below in viewDidLoad DataService.ds.REF_POSTS.observeEventType(.Value, withBlock: { snapshot in print(snapshot.value) self.posts = [] if let snapshots = snapshot.children.allObjects as? [FDataSnapshot] { for snap in snapshots { if let postDict = snap.value as? Dictionary { let key = snap.key let post = Post(postKey: key, dictionary: postDict) self.posts.append(post) } } } self.postTableView.reloadData() }) 

我在睡觉后想出来了。 在此发布,以便下一个人更容易理解。

  // Class variables var ref = Firebase(url: "https://") var titlesArray = [String]() // Under viewDidLoad // "events" is the root, and "title" is the key for the data I wanted to build an array with. let titleRef = self.ref.childByAppendingPath("events") titleRef.queryOrderedByChild("title").observeEventType(.ChildAdded, withBlock: { snapshot in if let title = snapshot.value["title"] as? String { self.titlesArray.append(title) // Double-check that the correct data is being pulled by printing to the console. print("\(self.titlesArray)") // async download so need to reload the table that this data feeds into. self.tableView.reloadData() } })