从Firebase数据库检索数据:发送给实例的无法识别的选择器

我有一个Firebase数据库,如下所示:

数据库

我没有问题保存到数据库,但是当我试图以下列方式检索数据:

//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) }) } 

该应用程序崩溃,我得到这个错误消息,但这是我从调试器得到的:

调试区域 - 变量视图/控制台

如果你更新到新的Firebase 3.0 API,并看看MakinGIANTS – 会发布关于firebase和查询(这是在Kotlin,但“看起来像”Swift),可能会更好

来自Firebase文档 :

您可以使用FIRDataEventTypeValue事件来读取给定路径上的数据,因为它在事件发生时存在。 这个方法在监听器被连接时触发一次,并且每次数据(包括任何子节点)都会再次发生变化。 事件回调会传递包含该位置所有数据(包括子数据)的快照。

所以snapshot实际上是Order中一些对象的数组,而不仅仅是最近添加的一个。 尝试获取最后一个对象,然后从中获取数据:

 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 })