Использование разбивки на страницы и извлечения для обновления с помощью UITableViewDiffableDataSource
У меня есть UITableViewController
который поддерживает как разбиение на страницы, так и вытягивание для обновления.
Я пытаюсь понять, как правильно обращаться с
- Замена всех данных - потяните, чтобы обновить
- Добавить новые элементы - разбивка на страницы
У меня есть способ обновления, подобный приведенному ниже.
Когда данные обновляются от запроса до обновления или загружаются в первый раз, 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()
или действительно ли нормально каждый раз просто добавлять к пустому снимку?