IGListkit ответственность за сеть - PullRequest
0 голосов
/ 30 сентября 2018

Использование IGListkit и небольшая путаница с обязанностями по сбору данных.

фиктивный пример - скажем, я работаю с категориями транспортных средств и хочу, чтобы контроллер раздела по существу делал вещи с марками автомобилей для категории.

Контроллер My View имеет концепцию брендов, и в секциях контроллеров отобразится список моделей для этих марок автомобилей:

  • Honda
    • Civic
    • Пилот
    • Аккорд

В приложении мне нужно позвонить по сети, чтобы получить отдельные модели.

Будет ли эта обязанность возложена на контроллер представления, по сути, многократно вызывая API, получая все модели для бренда, строя модели и передавая их контроллеру секций?

Или будет представлениеконтроллер просто передает марку (Honda) контроллеру секции, а затем контроллер секции отвечает за выполнение сетевого вызова, захват всех своих марок и перезагрузку самого себя?

1 Ответ

0 голосов
/ 23 января 2019

IGListKit работает с массивами объектов для создания необходимых для них разделов.Я бы не стал помещать все сети в класс UIViewController, а вместо этого - создать подкласс ListAdapterDataSource для вашей конкретной задачи, который будет выполнять 3 разных сетевых запроса.

В обратном вызове для каждого из них вы добавляете результаты в массив ListDiffable:

var users: [ListDiffable] = [] {
    didSet {
        update()
    }
}

private func update() {
    DispatchQueue.main.async { [weak self] in
        self?.adapter.performUpdates(animated: true, completion: { _ in
            self?.loading = false
        })
    }
}

. Вызов performUpdates таким образом гарантирует, что IGListKit использует свой интеллектуальный алгоритм сравненияизменяйте / добавляйте только те ячейки, которые были добавлены недавно, оставляя уже отображенные неизменными и не влияющие на производительностьВы можете установить различные классы для секций / ячеек в методе func listAdapter(_ listAdapter: ListAdapter, sectionControllerFor object: Any) -> ListSectionController протокола ListAdapterDataSource

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