Заполнение UITableView в Firebase заданным количеством ячеек за раз

Я использую Firebase для заполнения файла UITableView.

Мне было интересно, возможно ли, чтобы Firebase загрузил первые 5 результатов, и, как только пользователь прокрутил до последнего из них, загрузил следующие 5 результатов.

На данный момент Firebase загружает все мои дочерние узлы сразу, но если бы он делал это по крупицам, представление загружалось бы быстрее.

Любой совет?

--РЕДАКТИРОВАТЬ

Важно отметить, что в ячейках есть изображения. Изображения имеют кодировку base64 NSStrings. Вот код, который я использую, чтобы получить их и превратить в UIImages

NSString* profPicString = [child.value objectForKey: @"profilePicture"];
NSData *dataFromBase64 = [NSData base64DataFromString:profPicString];
UIImage *profPicImage = [[UIImage alloc]initWithData:dataFromBase64];
item.profilePicture = profPicImage;

person Philip Sopher    schedule 21.12.2015    source источник
comment
Это не повлияет на вид. iOS отрисовывает только то количество ячеек, которое необходимо для страницы, поэтому dequeueReusableCellWithIdentifier. Однако у вас могут возникнуть проблемы с большими наборами данных из-за времени загрузки. Насколько велик ваш ожидаемый набор данных?   -  person David East    schedule 21.12.2015
comment
Пока наборы данных довольно малы. Табличные представления содержат от 2 до 10 наблюдений каждое. Они загружаются довольно быстро до 5 наблюдений, но затем все становится намного медленнее. Основная причина, по которой он такой медленный после стольких наблюдений, заключается в том, что каждая ячейка tableview включает изображение, которое, кажется, немного замедляет его. Хотя наборы данных сейчас невелики, я ожидаю, что они станут намного больше — до сотен или тысяч. Если это медленно с 10 наблюдениями, это будет слишком медленно со 100. Я не могу ограничить их первым или последним, потому что их нужно отсортировать одним из детей. @DavidEast   -  person Philip Sopher    schedule 22.12.2015
comment
Ах! И я так понимаю, у вас есть изображения, сохраненные как URL-адрес изображения?   -  person David East    schedule 22.12.2015
comment
@DavidEast, изображения хранятся как NSString, а не строки URL   -  person Philip Sopher    schedule 22.12.2015
comment
@DavidEast да, я отредактировал вопрос, чтобы показать код, который я использую для получения изображений.   -  person Philip Sopher    schedule 22.12.2015
comment
должен быть вопрос, связанный больше с FireBase, чем с iOS   -  person Lucas Huang    schedule 22.12.2015
comment
@DavidEast есть ли способ, которым люди обычно заполняют таблицы изображений из больших наборов данных с помощью Firebase?   -  person Philip Sopher    schedule 22.12.2015


Ответы (1)


Первоначальная мысль

Я не знаю, есть ли для этого идеальное решение, но я бы определенно изучил сложные запросы в документации Firebase. Вы можете запрашивать определенные диапазоны, используя методы queryStartingAtValue и queryEndingAtValue, но вы должны убедиться, что ваша Firebase правильно настроена для работы с ними.

В нижней части раздела Range Queries упоминается:

Запросы диапазона также полезны, когда вам нужно разбить данные на страницы.

Так что это может быть вашим идеальным решением.

Существующее решение

Существует ответ, который я нашел который использует то, что я упомянул выше, так что, надеюсь, это сработает для вас. Я добавлю, что мне не очень повезло с использованием этих методов запроса диапазона на моей базе огня.

Заключительная мысль

Еще одно решение, которое, вероятно, не является тем ответом, который вы хотите услышать, но URL-адрес (надеюсь) намного короче, чем изображение в кодировке base64, и может иметь большое значение во времени загрузки при работе с большим количеством данных. В этой реализации вы запрашиваете изображения с сервера только тогда, когда они вам нужны, а не все сразу.

person tfrank377    schedule 21.12.2015