2

更新

我一直在尝试通读所有文档(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"))
                })

        })

提前致谢!

4

0 回答 0