我从Firebase查询分支,以便将以下内容打印到控制台:
{
2345 = 1;
6244 = 1;
q6x8 = 1;
}
我正在尝试在左边创建一个值数组;即,一个看起来像这样的数组:[2345,6244,q6x8]。
因为打印到控制台的数据结构使用等号而不是冒号,所以它不是字典,也不是哈希映射。因此,当我尝试做
时print(snap.value![0])
或
print(snap.value!.first)
我收到错误提示“输入'任何'没有下标成员”或“输入'任何'没有成员'先'。”
我被困住了。任何帮助将不胜感激,提前谢谢。
答案 0 :(得分:0)
snap.value [0]不起作用,因为返回的数据是DataSnapshot类型。此外,Firebase使用键值对。因此,您的数据必须类似于:2345 = 1 : true
guard let snap = snap.children.allObjects as? [DataSnapshot] else {return}
for (key, val) in snap {
print(key, val)
}
答案因Firebase数据结构而异。在您的情况下,snap
为2345 = 1 : true
。
答案 1 :(得分:0)
阿琼,
我正在访问firebase上的数据集,我的代码看起来像这样。
typealias JSONObject = [String: Any]
Auth.auth().signIn(withEmail: "blah.blah@gmail.com", password: "blahblah", completion: { (user, error) in
if error == nil {
self.loadconfig(login: "blahblah", passwd: "blahblah", rulelist: "blah")
}
})
..
..
..
func loadconfig(login: String, passwd: String, rulelist:String) {
let rootRef = Database.database().reference().child(rulelist)
var jsonObjects:[JSONObject] = []
rootRef.observe(.value, with: { snapshot in
if let _ = snapshot.value as? [JSONObject] {
jsonObjects = (snapshot.value as? [JSONObject])!
do {
self.products = try jsonObjects.map(decode)
} catch {
print("failed")
}
}
}
我的数据看起来像这样......
{
"blah" : [ {
"X" : 1,
"Y" : 1,
"Z" : "true",
"A" : 1,
"B" : "https:",
}, {
"X" : "Rule 0",
"Y" : "Go Market after GrandHall",
"Z" : "00:01",
"A" : "true"
} ]
}
如果这不能帮助您尝试更新问题,并在问题中包含数据集的导出。