Использование разбивки на страницы и извлечения для обновления с помощью UITableViewDiffableDataSource

У меня есть UITableViewController который поддерживает как разбиение на страницы, так и вытягивание для обновления.

Я пытаюсь понять, как правильно обращаться с

  1. Замена всех данных - потяните, чтобы обновить
  2. Добавить новые элементы - разбивка на страницы

У меня есть способ обновления, подобный приведенному ниже.

Когда данные обновляются от запроса до обновления или загружаются в первый раз, refresh флаг true и при обновлении пагинации это false.

func update(with list: UserList, animate: Bool = true, refresh: Bool) {

  var snapshot: NSDiffableDataSourceSnapshot<Section, UserList>

  if refresh {
    snapshot = NSDiffableDataSourceSnapshot<Section, UserList>()
    snapshot.appendSections(Section.allCases)
  } else {
    snapshot = dataSource.snapshot()
  }

  snapshot.appendItems(list.active, toSection: .active)
  dataSource.apply(snapshot, animatingDifferences: animate)
}

Я не уверен, правильно ли это.

Я создаю новый пустой снимок при обновлении, добавлении разделов, добавлении элементов и применении.

При разбивке на страницы я беру существующий снимок источника данных и добавляю свои элементы в конец.

Это правильное использование dataSource.snapshot() или действительно ли нормально каждый раз просто добавлять к пустому снимку?

0 ответов

Другие вопросы по тегам