【发布时间】:2018-01-21 03:49:15
【问题描述】:
我正在查询一个 JSON 僵尸数据库,它将它们作为字典返回。我不知道如何使用 SWIFT 3 对其进行变异
这是查询::
func getZombieAttackGroupFromDatabase () {
ref?.child("Attacker Group").child((self.userParty?.leadID)!).observeSingleEvent(of: .value, with: { (snapshot) in
// Get data
print("PULLING DATA")
if let value = snapshot.value as? NSDictionary{
// break data into an Array of Zombie Structs
// print(value)
for zombieID in value.allKeys {
print(value[zombieID])
let thisZombieID = zombieID
let thisZombieGroup = value[zombieID]["Group"]
}
} else {
}
// ...
}) { (error) in
print(error.localizedDescription)
}
}
这部分:让 thisZombieGroup = value[zombieID]["Group"] 未被识别。如何访问群组?如果我明白了,我可以修改其他组件。
这是回报:
{
"-KrNSmv64Ia32g5nw1L9" = {
Group = 15;
Health = 250;
"Is Undead" = true;
Location = 1;
Number = 0;
};
"-KrNSmv64Ia32g5nw1LA" = {
Group = 11;
Health = 250;
"Is Undead" = true;
Location = 5;
Number = 1;
};
"-KrNSmv64Ia32g5nw1LB" = {
Group = 2;
Health = 250;
"Is Undead" = true;
Location = 3;
Number = 2;
};
"-KrNSmv776r9eO6t7CY0" = {
Group = 14;
Health = 250;
"Is Undead" = true;
Location = 0;
Number = 3;
};
"-KrNSmv776r9eO6t7CY1" = {
Group = 0;
Health = 250;
"Is Undead" = true;
Location = 4;
Number = 4;
};
}
如您所见,每个 Struct 都有一个父级,该父级是一个自动生成的 ID。我不知道如何访问它。
如何访问第 1 项中的每个元素?我需要父自动密钥“-KrNSmv64Ia32g5nw1L9”和每个子值。
"-KrNSmv64Ia32g5nw1L9" = {
Group = 15;
Health = 250;
"Is Undead" = true;
Location = 1;
Number = 0;
【问题讨论】:
-
您是否在问如何将 JSON 解析为结构(并使用每个元素的根字符串作为每个结构的属性)?或者如何在事先不知道键的情况下访问字典结构?
-
更新了我的查询
-
制作打印(值[zombieID])。你会得到什么价值?
-
每次运行都会得到不同的僵尸,所以数据不匹配,但代码是一样的:输出是 Optional({ Group = 6; Health = 250; "Is Undead " = true; Location = 5; Number = 1; }) Optional({ Group = 11; Health = 250; "Is Undead" = true; Location = 1; Number = 0; }) Optional({ Group = 1; Health = 250;“不死者”= true;位置 = 4;数量 = 3;}) 可选({ 组 = 10;健康 = 250;“不死者”= true;位置 = 2;数量 = 2;})跨度>
-
print(thisZombieID) 返回的正是我想要的。我只需要子级数据 ::: -KrNeL-emFB62OyXfBXy -KrNeL-emFB62OyXfBXx -KrNeL-emFB62OyXfBY- -KrNeL-dL_MwsXyTlp0- -KrNeL-emFB62OyXfBXz
标签: ios json swift dictionary firebase