ios - Как разбить результаты на страницы, используя Geofire с Firebase - PullRequest
0 голосов
/ 28 октября 2019

У меня есть CollectionView, в котором отображаются элементы, упорядоченные по местоположению, и я пытаюсь разбить их на определенную сумму (например, 20 элементов).

Я использую Geofire, чтобы упорядочить их по местоположению, но проблема в том, что он не поддерживает запросы, ограниченные количеством результатов, поэтому я не могу получить целую страницу без доступа ко всем идентификаторам.

Мне пришла в голову идея попасть на первую страницу. все ключи элементов в заданном местоположении, упорядоченные по местоположению:

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
}

Затем сохраните их, и на каждой странице будет получено и запрошено следующее (pageAmount) itemKeys с использованием Firebase rererence.child(itemKeyInArray).

Мое основное беспокойство по этому поводу заключается в том, что, если у меня очень большой набор элементов в базе данных, насколько эффективно он будет выполнять итерацию (и сортировку) по всем ключам.

Другой подход начинался с небольшого наборарадиус, и увеличивая его на каждой странице до предела, и, несмотря на то, что он кажется более эффективным, мне все равно нужно общее количество элементов в радиусе (чтобы рассчитать количество ячеек, яn * CollectionView)

Каков был бы правильный подход для разбивки результатов по локациям?

1 Ответ

0 голосов
/ 28 октября 2019

В настоящее время нет способа сделать пагинацию на Geofire. Самый распространенный подход, который я видел, - это делать несколько постепенно расширяющихся диапазонов запросов, чтобы сначала отображались ближайшие элементы, как вы уже пытались. Вы также можете получить все ключи для более широкого диапазона, а затем заказать их на расстоянии самостоятельно, чтобы сделать нумерацию страниц. Таким образом, вам нужно только получить детали для подмножества ключей. Оба подхода верны, ни один объективно не лучше другого.

См. Также:

...