如何设置变量以从Swift中的Firebase数据库结构获取值

时间:2016-10-23 16:16:59

标签: ios swift firebase firebase-realtime-database

我现在正在努力使用Firebase数据库。

例如,这是我的数据库结构

"Menus" : {
"Day1" : {
  "mealDes" : "delicious Thai food",
  "date" : "2016.10.20",
  "mealname" : "kakoon"
},

我需要设置一个变量来获取" date"。

的值

类似:print(theDateVar)//得到2016.10.20

我尝试了一些observeSingleEvent和观察方法,他们没有工作!

DataService.ds.REF_MENUS.observeSingleEvent(of: .value, with: { snapshot in

            if let date = snapshot.childSnapshot(forPath: "menuDate") as? String {

                print ("date is \(date)")

            }

        })

我知道经常会询问从数据库中检索数据, 但我搜索的所有问题都没有帮助

请帮帮我:(我周末度过了一半的时间,但仍然......

更新

嗨,它完全奏效了!

我的代码现在如下所示:

 FIRDatabase.database().reference().child("Menus/Day1").observeSingleEvent(of: .value, with: {(snap) in

            if let snapDict = snap.value as? Dictionary <String, AnyObject>{

                let date = snapDict["mealPic"] as! String


                let OrderInfo = DataService.ds.REF_ORDER
                let USERUID = FIRAuth.auth()!.currentUser!.uid
                let userinfo = OrderInfo.child("date").child(USERUID).child("data")

                userinfo.child("address").setValue("SomeRandomAddress")
                userinfo.child("phonenumber").setValue("666888")
            }
        })

但如果我想将地址值和电话号码值设置为我在其他节点(用户)中的值,该怎么办

"Menus": {
"User" : {
"WbxT2bBgcnYOEn2YUqpvh4mtxvo2" : {
  "address" : "taipei City ",
  "phonenumber" : "0933555666",
  "provider" : "Firebase"
}

我在observeSingleEvent中再次使用observeSingleEvent吗?

1 个答案:

答案 0 :(得分:0)

尝试使用: -

 FIRDatabase.database().reference().child("menus/Day1").observeSingleEvent(of: .value, with: {(snap) in

        print(snap)

        if let snapDict = snap.value as? [String:AnyObject]{

            let date = snapDict["date"] as! String
            print(date)

        }
    })