ios-如何使用带有Firebase的Geofire对结果进行分页

时间:2019-10-28 18:52:38

标签: ios swift firebase pagination geofire

我有一个CollectionView,其中显示了按位置排序的商品,并且我试图按给定的数量对它们进行分页(例如20项)。

我正在使用Geofire按位置对它们进行排序,但是问题是它不支持受结果数限制的查询,因此如果不获取所有ID,就无法获得整个页面。

我想到了在首页上按位置排序给定位置中所有项键的想法:

locationQuery?.observe(.keyEntered, with: { (key, location) in
    print("KEY: ", key, " and location: ", location.coordinate)
    itemKeys.append(key)
})

locationQuery?.observeReady {
    print("All item keys loaded. There are: ", itemKeys.count, " items in radius")
    locationQuery?.removeAllObservers()
    completion(itemKeys) //itemKeys.count would be the number of cells in the collectionView
}

然后保存它们,并在每个页面中使用Firebase rererence.child(itemKeyInArray)检索并查询itemKeys的下一个(pageAmount)。

我对此的主要担心是,如果我在数据库中有很多项目,那么通过所有键进行迭代(和排序)的效率如何。

另一种方法是从较小的半径开始,然后将其逐页增加直到达到限制,尽管看起来效率更高,但我仍然需要半径内的项目总数(以计算{ {1}})

哪种方法适合按位置分页结果?

1 个答案:

答案 0 :(得分:0)

目前无法在Geofire上进行分页。我所见过的最常见的方法是进行一些逐渐扩大范围的查询,以便首先显示附近的项目,就像您已经尝试过的那样。您还可以获取更大范围的所有键,然后自己命令远距离进行分页。这样,您只需要检索键子集的详细信息。两种方法都是有效的,客观上都没有一个比另一个更好。

另请参阅: