更新
我一直在尝试通读所有文档(firebase 和 geofire)并在网络上搜索,但在尝试掌握如何使用 geofire 运行查询并使用查询的数据填充 uitableview 时遇到了问题。
我已经从这篇文章中了解了填充表的不同实现,但我无法理解如何使用geofire 查询生成的字符串(键)正确地创建 .Value 查询或 .ChildAdded 查询。
希望有人可以帮助我提供一些示例代码,我们可以保留它以帮助将来遇到类似问题的访问者。
任何帮助,将不胜感激!提前致谢!
原始问题
我正在尝试使用 Firebase 使用 Geofire 插件运行查询,并尝试根据用户的位置作为中心来拉出帖子列表。它确实有效,但 tableview 只填充了一个结果(即当前或最新帖子)。如何使用用户的位置运行地理查询以提取他们周围的所有帖子?
这是我的参考代码:
if(userLocation != nil){
print("geoQuery ran")
let geoFire = GeoFire(firebaseRef: Firebase(url: "https://myfirebase.firebaseio.com/PostLocation"))
let center = CLLocation(latitude: self.userLocation!.latitude, longitude: self.userLocation!.longitude)
let circleQuery = geoFire.queryAtLocation(center, withRadius: 6)
circleQuery.observeEventType(GFEventTypeKeyEntered, withBlock: {
(key: String!, location: CLLocation!) in
print("Key '\(key)' entered the search area and is at location '\(location)'")
let ref = Firebase(url:"https://myfirebase.firebaseio.com/Posts")
ref.queryOrderedByChild("objectID").queryEqualToValue(key)
.observeEventType(.Value, withBlock: { snapshot in
var tempItems = [NSDictionary]()
for item in snapshot.children {
let child = item as! FDataSnapshot
let dict = child.value as! NSDictionary
tempItems.append(dict)
}
self.items = tempItems
self.tableView.reloadData()
UIApplication.sharedApplication().networkActivityIndicatorVisible = false
print(snapshot.value.objectForKey("text"))
print(snapshot.value.objectForKey("user"))
})
})
提前致谢!