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

问题描述 投票:0回答:1

我有一个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)。

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

[另一种方法是从小半径开始,然后在每页中增加它,直到达到极限为止,尽管看起来效率更高,但我仍然需要该半径内的项目总数(以计算[C0 ])

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

ios swift firebase pagination geofire
1个回答
0
投票

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

另请参阅:

© www.soinside.com 2019 - 2024. All rights reserved.