我正在尝试为firebase DB中的用户保存某些值。我能理解数据的唯一方法是使用userID作为密钥。这是我想要实现的目标
https://firebaseDB/user_orders/userID - >清单(订单)
但是,当我尝试使用用户ID作为密钥时,我收到的错误是
2016-08-17 14:56:10.479 BetMe [4322:84427] ***由于终止应用程序 未捕获的异常'NSUnknownKeyException',原因: '[setValue:forUndefinedKey:]: 此类不是密钥值编码兼容的密钥 3ISnq916LBdmmv7330ELByxCHV33'。
这是我的代码段
let orderRef = rootRef.child("user_orders")
orderRef.observeEventType(FIRDataEventType.Value, withBlock: { (snapshot) in
//
if(!snapshot.hasChild(self.currentUser.uid))
{
orderRef.setValue("", forKey: self.currentUser.uid)
}
orderRef.child(self.currentUser.uid)
})
orderRef.observeEventType(FIRDataEventType.Value, withBlock: { (snapshot) in
for order in orders
{
//
if(!snapshot.hasChild(order.betId)){
orderRef.setValue(order.dictionaryRepresentation(), forKey: order.betId)
}
}
})
请帮助我!
答案 0 :(得分:2)
所以我不确定你录制的订单详情是什么,但我只是留空了。我认为问题是你正试图保存到一个尚不存在的密钥中。
orderRef.observeEventType(FIRDataEventType.Value, withBlock: { (snapshot) in
//
if(!snapshot.hasChild(self.currentUser.uid))
{
let blankOrder = ["orderID": ""]
//setting the uid as a path should create it when setValue is called
orderRef.child(self.currentUser.uid).setValue(blankOrder)
}
})