Множество хороших потоков вокруг TableViews и различные методы, вызываемые чаще, чем ожидалось при построении представления. ( здесь и здесь в SO, чтобы назвать несколько). Полезные комментарии - и мне достаточно, чтобы не пытаться понять, как это остановить:)
Вместо этого я здесь, чтобы спросить, как лучше структурировать мое приложение, чтобы избежать неэффективного выполнения запросов облачного набора из-за как на практике выполняется построение табличного представления.
Моя структура:
- Контроллер первого просмотра имеет список курсов (каждый курс состоит из недель и каждой недели лекций )
- Когда я нажимаю на курс, я затем передаю курс контроллеру представления назначения
- Сначала я получаю список недель для этого курса в массиве - затем для каждой недели
- Затем я строю таблицу, используя недели для определения разделов, а затем запрашиваю CloudKit, чтобы получить лекции для каждой недели
Я разработал ее так, чтобы я брал лекции для определенная неделя в вызове numberOfRowsInSection, чтобы подготовить его к вызову cellForRowAt. Это «работает» - я получаю ожидаемые данные в правильном порядке.
Однако это очень неэффективно, так как я вызываю CloudKit чаще, чем один раз в неделю, поскольку все функции numberOfRowsInSection (и другие различные функции) вызываются больше, чем «ожидалось» при создании таблицы.
Нужно ли мне реорганизовать ее в l oop в течение массива недель и вместо этого добавлять массив лекций внутри каждой недели в viewDidLoad? Есть ли более умный / более эффективный способ приблизиться к нему?
И в более широком смысле - я прав, что следует избегать любого чтения / записи (облачного хранилища или базы данных) в рамках различных функций, которые создают табличное представление