我知道我已经观察过了,但是代码看起来应该是什么让我疯了!该应用程序使用childByAutoId上层节点向Firebase添加纬度和经度,我想阅读它们。
getData()旨在读取所有位置。
Swift 4
/**Data looks like this
-locations
-- L44dslhfhdslhf
-----latitude: "90.8883"
-----longitude: "46.9732"
**/
var ref:DatabaseReference!
override func viewDidLoad() {
super.viewDidLoad()
ref = Database.database().reference().child("locations")
}
func addLocation(){
let location = ["latitude": latitudeInput.text!,
"longitude": longitudeInput.text!,
] as [String : Any]
ref.childByAutoId().setValue(location)
}
func getData(){
/ **下面没有任何工作,我已尝试过各种不同的方法** /
self.ref.child(<WHAT HERE>).observe(.value, with { (snapshot)} in
if let snapshot = snapshot.children.allObjects as? [DataSnapshot]{
for snap in snapshot {
if let data = snap.value as? [String:AnyObject]{
let lat = data["latitude"]
let long = data["longitude"]
print(lat as Any)
print(long as Any)
}//end if
}//end for
}//end if
}//end ref
}//end getData
答案 0 :(得分:0)
直接使用位置观察器很简单。当您使用autoid添加位置时,您不需要任何子密钥
以及您的代码
self.ref.child(<WHAT HERE>).observe(.value, with { (snapshot)} in
应该是
self.ref.observeSingleEvent(.value, with { (snapshot)} in
您可以观察单个事件的价值。所以用
读取所有当前值之后
self.ref.observe(.childAdded, with { (snapshot)} in
(将孩子添加到地点时致电)
希望它对你有所帮助