![](/img/trans.png)
[英]Retrieving Data from Firebase under ChildByAutoId and adding to array - Xcode - Swift
[英]Read data from Firebase using Swift4 - has childByAutoId upper node
我知道我必须“观察”,但是正是代码看起来像让我发疯了! 该应用程序使用childByAutoId上层节点向Firebase添加了经度和纬度,我想阅读这些经纬度。
getData()用于读取所有位置。
斯威夫特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
它很容易直接使用位置观察器。 因为您要添加具有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
(在将孩子添加到位置时调用)
希望对您有帮助
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.