UICollectionVIew Compositional Layout & DiffableDataSource,如何开启数据预取?

UICollectionVIew Compositional Layout & DiffableDataSource, how to enable data prefetching?

如何在使用新的 Compositional Layout 和 DiffableDataSource 时启用数据预取?

以前,我们可以通过符合自定义数据源对象来实现这一点,例如,

class CustomDataSource: NSObject, UICollectionViewDataSource, UICollectionViewDataSourcePrefetching

现在数据源是UICollectionViewDiffableDataSource,只符合UICollectionViewDataSource.

一种方法是扩展它以符合预取协议。然而,由于它将 DataSource 的协议实现封装到更高级别的方法中,如 snapshotsapply。我不知道如何扩展它以符合预取协议。

您对 UICollectionViewDataSourcePrefetching 的实施设置在 UICollectionView 的单独 属性 上,名为 prefetchDataSource。所以你不需要继承 UICollectionViewDiffableDataSource

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

我可以确认预取在使用 UICollectionViewDiffableDataSource 时有效。您需要将预取数据缓存在某处,然后从您的 cellProvider(或 UICollectionView.CellRegistration

访问它

例如,如果您的视图控制器实现了 UICollectionViewDataSourcePrefetching,那么您可能有一行将其指定为 prefetchDataSource:

myCollectionView.prefetchDataSource = self