2016-05-06 9 views
1

ich Namen in Firebase zu einem Tisch am Hochladen eine Schleife, die sie mit der childByAutoID() Methode wie folgt ergänzt:abrufen Auto-ID von Firebase JSON swift

for dependent in dependentsArray 
    { 
     let dependentName = dependent.text.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet()) 

     CURRENT_USER_DEPENDENTS_URL.childByAutoId().setValue(["name" : dependentName]) 
    } 

, die dann wie dies in meinem Armaturenbrett aussieht:

enter image description here

ich beobachte dann die abhängige Tabelle wie folgt:

CURRENT_USER_DEPENDENTS_URL.observeEventType(.Value, withBlock: { snapshot in 
     print(snapshot.value) 
     self.dependentsJSON = snapshot.value as? [String : [String : String]] 

     }, withCancelBlock: { error in 
      print(error.description) 
    }) 

Die print Anweisung im Code oben erzeugt dieses Wörterbuch JSON:

{ 
    "-KH3Cg0KFvMNEULYUezv" =  { 
     name = one; 
    }; 
    "-KH3Cg0LeTs54nbYonmv" =  { 
     name = two; 
    }; 
    "-KH3Cg0LeTs54nbYonmw" =  { 
     name = three; 
    }; 
    "-KH3Cg0LeTs54nbYonmx" =  { 
     name = four; 
    }; 
} 

Sehr einfach habe ich die UIDs jedes abhängig von diesem JSON-Wörterbuch erhalten können, möchten, so kann ich dann ein Array erstellen abhängiger UIDs in NSUserDefaults sowie das JSON-Wörterbuch wie folgt sortieren:

if let firstName = self.dependentsJSON?["-KH3Cg0LeTs54nbYonmx"]?["name"] { 
     print(firstName) 
} 

Randbemerkung: ich die UIDs zur Zeit sparen können, wenn sie cre sind Der Tatsache, dass die UIDs zur Laufzeit abgerufen werden müssen, wenn ein Benutzer die App jemals deinstalliert, ist jedoch nichts hinzuzufügen.

Antwort

4

können Sie folgendermaßen vorgehen

var idList = [String]() 

CURRENT_USER_DEPENDENTS_URL.observeEventType(.Value, withBlock: { snapshot in 
    //print(snapshot.value) 
    self.dependentsJSON = snapshot.value as? [String : [String : String]] 

    for dependent in self.dependentsJSON{ 
     idList.append(dependent.key) 
    } 

    }, withCancelBlock: { error in 
     print(error.description) 
}) 

Dann würden Sie die Werte zugreifen

if let firstName = self.dependentsJSON?[idList[0]]?["name"] { 
    print(firstName) 
} 
+0

super danke! –

1

Könnten Sie dies nicht tun:

var keys = Array(self.dependantsJSON.keys) 

Es ist schon eine Weile her, seit ich mit schnellen gearbeitet, aber ich bin mir ziemlich sicher, dass Sie alle Schlüssel aus dem zurück Snapshot greifen und aus ihnen ein Array erstellen.

+0

im überrascht, dass ich dieses früher denken abgepfiffen. Danke! –