2016-06-15 18 views
1

ich eine Datenbank Firebase haben, die wie folgt aussieht:Abrufen von Daten aus Firebase Datenbank: Unbekannter Selektor gesendet Instanz

database

Ich habe kein Problem Speichern in der Datenbank, aber wenn ich versuche, Daten abzurufen auf folgende Weise:

//Properties 
@IBOutlet weak var bike1LBL: UILabel! 
@IBOutlet weak var bike2LBL: UILabel! 
@IBOutlet weak var bike3LBL: UILabel! 
@IBOutlet weak var bike4LBL: UILabel! 
@IBOutlet weak var chainLBL: UILabel! 
@IBOutlet weak var brakeLBL: UILabel! 
@IBOutlet weak var locationLBL: UILabel! 
@IBOutlet weak var phoneLBL: UILabel! 


override func viewDidLoad() { 
    super.viewDidLoad() 

    var ref = Firebase(url:"sdfghjkl/firebaseio.com/Order/") 
    // Retrieve new posts as they are added to database 
    ref.observeEventType(.ChildAdded, withBlock: { snapshot in 

     let road = snapshot.value.objectForKey("Bike-Type1") as? String 
     self.bike1LBL.text = road 
     let city = snapshot.value.objectForKey("Bike-Type2") as? String 
     self.bike2LBL.text = city 
     let mountain = snapshot.value.objectForKey("Bike-Type3") as? String 
     self.bike3LBL.text = mountain 
     let christiania = snapshot.value.objectForKey("Bike-Type4") as? String 
     self.bike4LBL.text = christiania 
     let chain = snapshot.value.objectForKey("Chain") as? String 
     self.chainLBL.text = chain 
     let brake = snapshot.value.objectForKey("Brake") as? String 
     self.brakeLBL.text = brake 
     let location = snapshot.value.objectForKey("Location") as? String 
     self.locationLBL.text = location 
     let phone = snapshot.value.objectForKey("Phone") as? String 
     self.phoneLBL.text = phone 
     print(snapshot.value) 
    }) 
} 

die App stürzt ab und ich bekomme diese Fehlermeldung, aber das ist alles, was ich von dem Debugger bekam:

debug area - variables view/console

+1

Von dem, was Sie sehen, scheinen die Eigenschaften, auf die Ihr Code zugreift, in JSON zu sein. Haben Sie in einem Debugger den Code durchgegangen, um zu sehen, welches 'objectForKey()' das Problem verursacht? –

+0

Danke für die schnelle Antwort @Frank van Puffelen! Ich habe den Post bearbeitet, ich hoffe, er liefert jetzt mehr Informationen, aber ich kann immer noch nicht herausfinden, welcher Schlüssel den Absturz verursacht hat. –

+1

Es gibt ein Objekt, das ein 'NSArray' und kein' NSDictionary' ist, wie Sie denken. Es ist schwer zu sagen, welche, Sie müssen Haltepunkte oder zumindest printf verwenden, um zu wissen, welcher der Täter sein könnte. Bitte vermeiden Sie den Screenshot und kopieren Sie stattdessen die Fehlermeldung. – Larme

Antwort

0

wird besser, wenn Sie neue Firebase 3.0 api aktualisieren und einen Blick auf MakinGIANTS - Post über Feuerbasis und Anfragen nehmen (es ist in Kotlin aber „aussehen wird“ Swift) und

0

Vom Firebase docs helfen können:

können Sie das FIRDataEventTypeValue Ereignis verwenden, um die Daten in einem gegebenen Pfad zu lesen, da sie zum Zeitpunkt des Ereignisses vorhanden ist. Diese Methode wird einmal ausgelöst, wenn der Listener angeschlossen ist, und jedes Mal, wenn die Daten einschließlich der untergeordneten Daten geändert werden. Der Ereignisrückruf wird an einen Snapshot übergeben, der alle Daten an diesem Ort enthält, einschließlich untergeordneter Daten.

So snapshot ist eigentlich eine Reihe von einigen der Objekte in Order, nicht nur die eine zuletzt hinzugefügt. Versuchen Sie, das letzte Objekt zu erhalten und dann die Daten daraus zu holen:

ref.observeEventType(.ChildAdded, withBlock: { snapshot in 
     let entry = (snapshot as! NSArray).lastObject as! NSDictionary 
     let road = entry.objectForKey("Bike-Type1") as? String 
     self.bike1LBL.text = road  
    }) 
Verwandte Themen