UICollectionVIew Compositional Layout и DiffableDataSource, как включить предварительную выборку данных?

Как включить предварительную выборку данных при использовании нового Compositional Layout и DiffableDataSource?

Раньше мы могли добиться этого, согласовав настраиваемый объект источника данных, например,

class CustomDataSource: NSObject, UICollectionViewDataSource, UICollectionViewDataSourcePrefetching

Теперь источником данных является UICollectionViewDiffableDataSource, что соответствует только UICollectionViewDataSource.

Один из способов - расширить его, чтобы он соответствовал протоколу предварительной выборки. Однако из-за того, что он инкапсулирует реализации протокола DataSource в свои методы более высокого уровня, такие как snapshots и apply. Я не могу понять, как расширить его, чтобы он соответствовал протоколу предварительной выборки.

1 ответ

Ваша реализация устанавливается в отдельном свойстве UICollectionViewназывается . Таким образом, вам не нужно создавать подкласс

https://developer.apple.com/documentation/uikit/uicollectionview/1771768-prefetchdatasource

Я могу подтвердить, что предварительная загрузка работает при использовании UICollectionViewDiffableDataSource. Вам нужно будет где-то кэшировать предварительно загруженные данные, а затем получить к ним доступ со своего cellProvider (или же UICollectionView.CellRegistration)

Например, если ваш контроллер представления реализует UICollectionViewDataSourcePrefetching тогда у вас может быть строка, в которой вы назначаете ее как prefetchDataSource:

      myCollectionView.prefetchDataSource = self