在firebase中存储值时,无法使用userID作为键

时间:2016-08-17 09:42:56

标签: ios swift firebase firebase-realtime-database

我正在尝试为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)
                }

            }
        })

请帮助我!

1 个答案:

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