【发布时间】:2017-02-12 20:07:29
【问题描述】:
这是我的 JSON 嵌套数据库的外观:
它是一个具有多个唯一 ID 的 pets 根。然后每个 ID 代表一个具有一些属性的宠物,其中一些(如 feedingList 和 walkingList)还包含更多的值,这些值表示进餐/散步及其时间和完成布尔值。
我已经在 Swift 中编写了代码来检索一些值,但我无法到达 fList 和 wList。
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)
}
}
对于name、age 和type,一切正常,但是当涉及到这行代码时:
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