Работа с CloudKit Queries и тот факт, что методы табличного представления (numberOfRowsInSection) могут вызываться непредсказуемым числом раз - PullRequest
0 голосов
/ 21 января 2020

Множество хороших потоков вокруг TableViews и различные методы, вызываемые чаще, чем ожидалось при построении представления. ( здесь и здесь в SO, чтобы назвать несколько). Полезные комментарии - и мне достаточно, чтобы не пытаться понять, как это остановить:)

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

Моя структура:

  • Контроллер первого просмотра имеет список курсов (каждый курс состоит из недель и каждой недели лекций )
  • Когда я нажимаю на курс, я затем передаю курс контроллеру представления назначения
  • Сначала я получаю список недель для этого курса в массиве - затем для каждой недели
  • Затем я строю таблицу, используя недели для определения разделов, а затем запрашиваю CloudKit, чтобы получить лекции для каждой недели

Я разработал ее так, чтобы я брал лекции для определенная неделя в вызове numberOfRowsInSection, чтобы подготовить его к вызову cellForRowAt. Это «работает» - я получаю ожидаемые данные в правильном порядке.

Однако это очень неэффективно, так как я вызываю CloudKit чаще, чем один раз в неделю, поскольку все функции numberOfRowsInSection (и другие различные функции) вызываются больше, чем «ожидалось» при создании таблицы.

Нужно ли мне реорганизовать ее в l oop в течение массива недель и вместо этого добавлять массив лекций внутри каждой недели в viewDidLoad? Есть ли более умный / более эффективный способ приблизиться к нему?

И в более широком смысле - я прав, что следует избегать любого чтения / записи (облачного хранилища или базы данных) в рамках различных функций, которые создают табличное представление

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...