我一直试图弄清楚firebase如何在swift中工作。举个例子:
let locationRef = FIRDatabase.database().reference(withPath: "Location")
print("A")
locationRef.observeSingleEvent(of: .value, with: { snapshot in
print("B")
})
print("C")
使用firebase数据库:
{
"Location" : [ {
"address" : "100 Foo Avenue",
"name" : "Foo"
}, {
"address" : "1800 Bar Street",
"name" : "Bar",
} ]
}
对我来说,无论我把observeSingleEvent(oSE)或放在oSE中的内容放在哪里,这段代码都不会打印B.根据文档,我认为oSE假设在运行时触发一次,然后在对firebase数据库进行任何更改时触发,但我无法触发它。在上一篇文章here中,我确实得到了它的工作,但我不知道如何,所以对oSE触发器的一些澄清将是惊人的!
答案 0 :(得分:2)
首先,在定义引用时你做错了。引用应为FIRDatabase.database().reference().child("Location")
。
其次你对oSE的了解是正确的,但是你做错了。为什么在定义路径后打印(" A")?
总之试试这个:
let locationRef = `FIRDatabase.database().reference().child("Location")`
print("A")
locationRef.observeSingleEvent(of: .value, with: { snapshot in
print(snapshot.value)//Just to show you what those prints
print(snapshot.allKeys)//Just to show you what those prints
print(snapshot.key)//Just to show you what those prints
})
print("C")
答案 1 :(得分:1)
如果您的位置字典上方有自动ID或任何未知ID,您可能想要使用它: -
let locationRef = FIRDatabase.database().reference().queryOrdered(byChild: "Location")