【问题标题】:Retrieving values of Firebase Database, nested data检索 Firebase 数据库、嵌套数据的值
【发布时间】:2017-02-12 20:07:29
【问题描述】:

这是我的 JSON 嵌套数据库的外观:

它是一个具有多个唯一 ID 的 pets 根。然后每个 ID 代表一个具有一些属性的宠物,其中一些(如 feedingListwalkingList)还包含更多的值,这些值表示进餐/散步及其时间和完成布尔值。

我已经在 Swift 中编写了代码来检索一些值,但我无法到达 fListwList

func getPetInfo() {

        let refMeals = reff.child("pets")
        refMeals.observe(.value, with: { (snapshot) in

            if let snapCast = snapshot.value as? [String:AnyObject]{
                for snap in snapCast{
                    if self.currentUser.pets.contains(snap.key) {
                        if let x = snap.value["name"] as? String{
                            self.tempPet.name = x
                            print(x)

                        }
                        if let y = snap.value["type"] as? String{
                            //self.tempPet.type = y
                            print(y)

                        }
                        if let z = snap.value["age"] as? Int{
                            //self.tempPet.age = z
                            print(z)
                        }
                        print(snap.value["fList"])
                         if let w = snap.value["fList"] as? [String:AnyObject]{
                            for snippete in w {
                                if let a = snippete.value["time"] as? String{
                                    //self.tempPet.feedingList.append(a)
                                    print(a)
                                }
                                if let b = snippete.value["doneForToday"] as? Bool{
                                    //self.isItDoneForToday.append(b)
                                    print(b)
                                }
                            }
                        }
                        if let r = snap.value["wlist"] as? [String:AnyObject]{
                            for snippete in r {
                                if let c = snippete.value["time"] as? String{
                                    //self.tempPet.feedingList.append(a)
                                    print(c)
                                }
                                if let d = snippete.value["doneForToday"] as? Bool{
                                    //self.isItDoneForToday.append(b)
                                    print(d)
                                }
                            }
                        }
                        //self.petArray.append(self.tempPet)
                    }
                }
            }
        }) { (error) in
            print(error.localizedDescription)
        }
    }

对于nameagetype,一切正常,但是当涉及到这行代码时:

 if let w = snap.value["fList"] as? [String:AnyObject]
...

它不允许它并且没有打印出来。你能告诉我哪里错了吗?我显然无法理解这个 JSON 树的值和数组。当我试图理解 get 的内容并转换为什么时,这很混乱。提前致谢。

这是打印出来的:

blasted
cat
3
Optional(<__NSArrayM 0x60800024f000>(
{
    doneForToday = 0;
    time = "12:00";
}
)
)  

【问题讨论】:

  • 看来 fList 和 wList 是数组而不是字典!
  • 什么意思?我的意思是以同样的方式“宠物”(在我的数据库中的第一张图片中)呈现为带有 [ID 的字符串:包含更多内容的 AnyObject] 的字典,我希望那些 fList 元素表示为 [Strings那是数字:AnyObject 有更多的东西]

标签: ios json swift firebase firebase-realtime-database


【解决方案1】:

试试这个:-

 if let r = snap.value["wlist"] as? [Int:AnyObject]{
                        for snippete in r {
                            if let c = snippete.value["time"] as? String{
                                //self.tempPet.feedingList.append(a)
                                print(c)
                            }
                            if let d = snippete.value["doneForToday"] as? Bool{
                                //self.isItDoneForToday.append(b)
                                print(d)
                            }
                        }
                    }
                    //self.petArray.append(self.tempPet)
                }

【讨论】:

  • 不,它不能解决问题。我已经将那些“0”和“1”的值设置为一个字符串,所以它不是一个整数。
  • @frank-van-puffelen 你能帮我吗?
  • 你能想出任何其他原因导致这不起作用。我坚持这一点,不知道如何继续
  • 是的,它们有效。我用控制台打印更新了问题
  • @Dravidian Could you please have a look at my question 因为我正在努力理解如何深入了解快照。
猜你喜欢
  • 1970-01-01
  • 2021-01-08
  • 1970-01-01
  • 2018-03-19
  • 2017-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多