Я использую Django в качестве бэкэнда, а внутри своего iOS-приложения я получаю данные через API. У меня есть UITableView, где я получаю список мест, которые также имеют значение рейтинга с ними. После реализации элемента управления обновлением я заметил, что всякий раз, когда я использовал для обновления, он добавлял новые данные в массив и создавал дублирование. Я подумал об очень простом решении, которое заключается в том, что мы можем фактически очистить наш массив при обновлении, чтобы избежать двойственности. Это самый эффективный способ сделать это? Я обеспокоен, потому что сейчас у меня есть 3 места в моем бэкэнде, которые я пытаюсь получить, и как насчет того, когда их будут сотни, будет ли какое-то влияние на производительность?
3 ответа
Просто нет, . Никаких проблем с производительностью, которые вы пробовали, нет, вы также можете назначить новый ответ вашей переменной, не удаляя результат просто так:
result = newResult;
Это лучший способ справиться с этой ситуацией, который вы можете увидеть, наконец, в Google Place API SDK, который они реализуют. И это точно, что они делают что-нибудь после выполнения всех тестов и анализа.
Я думаю, что лучшим подходом будет разбиение на страницы. Извлеките 10 или 20 данных в начале, сохраните их в массив и загрузите tableview
. Когда пользователь начинает прокручивать tableview
в методе willDisplayCell
, увеличивают количество страниц, получают следующие 10 или 20 данных с сервера и добавляют их в массив.
После реализации элемента управления обновлением я заметил, что всякий раз, когда я использовал для обновления, он добавлял новые данные в массив и создавал дублирование. Я подумал об очень простом решении, которое заключается в том, что мы можем фактически очистить наш массив при обновлении, чтобы избежать двойственности.
Когда вы обновляете данные (pull-to-refresh), вы должны очистить array
ваших данных и заполнить их новыми данными.
окажем ли мы какое-либо влияние на производительность?
И если вы имеете в виду что-то вроде «постраничной» загрузки, вам, вероятно, следует прочитать об этой большой проблеме. Лично мне очень нравится пост в Твиттере о внедрении сроков.
Также следует отметить, что нет проблем с отображением данных на экране, поскольку функция reloadData()
перезагружает только видимые ячейки. reload/delete/insertRows
также не такая сложная операция для пользовательского интерфейса. Итак, единственная проблема реализации заключается в согласованности данных на экране и базы данных.
Похожие вопросы
Новые вопросы
python
Python - это многопарадигмальный, динамически типизированный, многоцелевой язык программирования. Он разработан для быстрого изучения, понимания и использования, а также для обеспечения чистого и единообразного синтаксиса. Обратите внимание, что Python 2 официально не поддерживается с 01.01.2020. Тем не менее, для вопросов о Python, связанных с версией, добавьте тег [python-2.7] или [python-3.x]. При использовании варианта Python (например, Jython, PyPy) или библиотеки (например, Pandas и NumPy) включите его в теги.