2016-05-09 23 views
1

Ich bin im Kreis über etwas gegangen, das wirklich einfach scheint, aber ich kann es nicht herausfinden. Ich möchte einfach nur Daten von Firebase lesen und im Array speichern, damit ich sie in meiner App verwenden kann. Ich weiß, wie die Daten wie die folgenden Werke für mich zu lesen, in der Konsole zu drucken:Daten von Firebase lesen und in ein Array speichern (Swift)

var ref = Firebase(url: "<MYFIREBASEURL>") 

ref.observeEventType(.ChildAdded, withBlock: { snapshot in 

     print(snapshot.value.objectForKey("title")) 

    }) 

ich einige dieser Ansätze versucht, auf ein Array zu speichern, aber ich kann es nicht, wie es an die Arbeit geht nicht direkt auf meine einfachere Frage ein.

Adding Firebase data into an array

How to save data from a Firebase query

Vielen Dank für Ihre Hilfe!

Antwort

3

Ich habe es herausgefunden, nachdem ich darauf geschlafen habe. Hier schreiben, um es der nächsten Person leichter zu machen, es herauszufinden.

// Class variables 
var ref = Firebase(url: "https://<MYFIREBASEURL>") 
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() 
     } 
    }) 
2

So lese ich Werte und angehängt an Array mit Firebase. REF_POSTS ist eine URL-basierte Referenz auf mein Posts-Objekt in Firebase. Denken Sie daran, dass Firebase-Objekte im Wesentlichen Wörterbücher sind und dass Sie die Daten analysieren und Variablen zuweisen müssen, um sie zu verwenden.

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<String, AnyObject> { 
        let key = snap.key 
        let post = Post(postKey: key, dictionary: postDict) 
        self.posts.append(post) 
       } 
      } 
     } 
     self.postTableView.reloadData() 
    }) 
+0

Vielen Dank für Ihren Ansatz. – Ben

Verwandte Themen