Я использую Django в качестве бэкэнда, а внутри своего iOS-приложения я получаю данные через API. У меня есть UITableView, где я получаю список мест, которые также имеют значение рейтинга с ними. После реализации элемента управления обновлением я заметил, что всякий раз, когда я использовал для обновления, он добавлял новые данные в массив и создавал дублирование. Я подумал об очень простом решении, которое заключается в том, что мы можем фактически очистить наш массив при обновлении, чтобы избежать двойственности. Это самый эффективный способ сделать это? Я обеспокоен, потому что сейчас у меня есть 3 места в моем бэкэнде, которые я пытаюсь получить, и как насчет того, когда их будут сотни, будет ли какое-то влияние на производительность?

0
indexOutOfBounds 29 Авг 2017 в 10:46

3 ответа

Лучший ответ

Просто нет, . Никаких проблем с производительностью, которые вы пробовали, нет, вы также можете назначить новый ответ вашей переменной, не удаляя результат просто так:

result = newResult; 

Это лучший способ справиться с этой ситуацией, который вы можете увидеть, наконец, в Google Place API SDK, который они реализуют. И это точно, что они делают что-нибудь после выполнения всех тестов и анализа.

1
Salman Ghumsani 29 Авг 2017 в 08:16

Я думаю, что лучшим подходом будет разбиение на страницы. Извлеките 10 или 20 данных в начале, сохраните их в массив и загрузите tableview. Когда пользователь начинает прокручивать tableview в методе willDisplayCell, увеличивают количество страниц, получают следующие 10 или 20 данных с сервера и добавляют их в массив.

1
Amit 29 Авг 2017 в 07:56

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

Когда вы обновляете данные (pull-to-refresh), вы должны очистить array ваших данных и заполнить их новыми данными.

окажем ли мы какое-либо влияние на производительность?

И если вы имеете в виду что-то вроде «постраничной» загрузки, вам, вероятно, следует прочитать об этой большой проблеме. Лично мне очень нравится пост в Твиттере о внедрении сроков.
Также следует отметить, что нет проблем с отображением данных на экране, поскольку функция reloadData() перезагружает только видимые ячейки. reload/delete/insertRows также не такая сложная операция для пользовательского интерфейса. Итак, единственная проблема реализации заключается в согласованности данных на экране и базы данных.

1
pacification 29 Авг 2017 в 08:03