Diffable Data Source — это современный API, представленный в iOS 13, который управляет данными для UITableView и UICollectionView. Он заменяет традиционный подход на основе делегатов, используя модель на основе снимков, которая автоматически вычисляет и анимирует различия между состояниями данных.
Два основных класса:
UITableViewDiffableDataSourceUICollectionViewDiffableDataSourceОба требуют, чтобы секции и элементы были уникально идентифицируемы, обычно реализуя протокол Hashable.
Рабочий процесс опирается на NSDiffableDataSourceSnapshot:
var snapshot = NSDiffableDataSourceSnapshot<Section, Item>()
snapshot.appendSections([.main])
snapshot.appendItems(myItems)
dataSource.apply(snapshot, animatingDifferences: true)
insertRows, deleteRows и reloadDataapply из фонового потокаТрадиционный подход требовал ручной синхронизации модели данных с представлением, что было подвержено ошибкам и часто приводило к крашам NSInternalInconsistencyException. Diffable Data Source устраняет эту сложность, делая снимок единственным источником истины.
Для протокола Hashable требуется соответствие как для секций, так и для элементов в снимке diffable data source, чтобы гарантировать, что они могут быть уникально идентифицированы и сравнены для определения различий.
Новый — ещё не проверен сообществом
Вы