2017-05-26 4 views
0

Mein Code Ich kann keine Daten von Firebase abrufen.Kann keine Daten aus der Firebase-Datenbank abrufen

Wenn ich Werte in Firebase hinzufüge, sehe ich, dass Elemente in der Firebase-Datenbank auf meiner Konsole hinzugefügt werden.

Auch ich hatte Listener .childAdded erstellt und ich sehe, dass Elemente auf Firebase-Datenbank hinzugefügt.

Aber wenn ich rufe .value ruft es nil Ergebnis.

Ich weiß nicht, was dort passiert.

Hier ist mein Code.

class FirebaseManager { 

    var ref: DatabaseReference? 
    var database: DatabaseHandle? 

    static let shared: FirebaseManager = { 
     Database.database().isPersistenceEnabled = true 
     return FirebaseManager() 
    }() 

    private func initFireabase() { 
     ref = Database.database().reference(withPath: AMUtils.getUDID())   
    } 

    func addToDB(composition: Composition) { 
     initFireabase() 
     ref?.child(String(composition.id)).child("id").setValue(composition.id) 
     ref?.child(String(composition.id)).child("title").setValue(composition.title)  
    } 

    func removeFromDb(composition: Composition) { 
     ref?.child(String(composition.id)).removeValue() 
    } 

    func getCompositonFromDB(onResult: @escaping ([Composition]) -> Void){ 
     initFireabase() 
     var compositions: [Composition] = [] 
     database = ref?.observe(.value, with: { (snapshot) in 
      compositions.removeAll() 
      let value = snapshot.value as? JSON 
      compositions.append(AudioListParser.parseObject(json: value!)) 
      self.ref?.removeObserver(withHandle: self.database!) 
      onResult(compositions) 
     }) 
    } 
} 

getCompositonFromDB() Ich Aufruf bin, wenn ich die View-Controller bin ab und dies ist immer noch nil ich Werte auf Datenbank haben mich

Könnte jemand sagen, was ich hier falsch gemacht haben?

enter image description here

+0

'snapshot.value' in Ihrem Fall macht ein' NSDictionary '. Ich bin mir nicht sicher, was der 'JSON'-Typ ist, aber es ist kein Typ, den' FIRDataSnapshot.value' zurückgibt: https://firebase.google.com/docs/reference/ios/firebasedatabase/api/reference/Classes/ FIRDataSnapshot # Wert –

+0

@FrankvanPuffelen public typalias JSON = [String: Beliebig] – pmb

+0

Was bedeutet * das ist immer nil *? Wenn du die Zeile * print (snapshot) * unmittelbar nach der Beobachtungszeile hinzufügst, was druckt? – Jay

Antwort

0

geändert haben Sie die Regeln für die Datenbank ?? Wenn Sie sich authentifizieren, sollten Sie nicht null für schreiben und lesen setzen und wenn Sie nicht authentifizieren, dann behalten Sie es für beide null, weil das genaue Gegenteil von oben einige Fehler verursachen könnte !!

+0

ja ich changef es { "Regeln": { ".mehr": true, ".write": true } } – pmb

Verwandte Themen