Geofire TableView - 用于排行榜的CircleQuery用户

时间:2017-01-27 20:11:04

标签: swift uitableview firebase tableview geofire

我正在创建一个tableView,它将填充100公里范围内的所有附近用户 - 然后按其HighScore排序。

我正在使用的代码如下......

let geoFireUser = GeoFire(firebaseRef: DBProvider.instance.gameHighScoreRef)
self.circleQuery = geoFireUser?.query(at: currentUserCLLocation, withRadius: 100)

circleQuery?.observe(.keyEntered, with: { (key, location) in

    let queryRef = DBProvider.instance.gameHighScoreRef.queryOrdered(byChild: "highScore").queryLimited(toLast: 100)
    queryRef.observe(.childAdded, with: { (snapshot) in

        let userNearbyData = UserData(snapshot: snapshot)
        self.listOfNearbyUsers.append(userNearbyData)
        self.listOfNearbyUsers.sort(by: {$0.highScore > $1.highScore})

        })
    }) 
}

我创建了一个分段控件,它将显示,GLOBAL LIST和NEARBY LIST(100km)。

目前在我的gameHighScoreRef中 - 只有3个唯一键(3个用户)。 我的Firebase结构也是如此 根 - > gameHighScore - > GeoFire,HighScore,用户名..

我的全球列表显示3个用户。 我的NEARBY LIST显示了9个用户。它应该只显示3个用户。

为了确保我的课程正常运行,我删除了geoFire CircleQuery并显示了3个用户。

如何调整我的代码以搜索100公里范围内的用户。然后按他们的HighScore排序?

非常感谢任何帮助。

0 个答案:

没有答案