对于 UICollectionViewDiffableDataSource,是否可以直接更新给定部分/行的单元格,而不必构建整个快照?

For UICollectionViewDiffableDataSource, is it possible to direct cell update for a given section/ row, without having to build entire snapshot?

对于 UICollectionViewDiffableDataSource,我想知道是否有可能对给定的部分/行执行直接单元格更新,而无需构建整个 NSDiffableDataSourceSnapshot 快照?

有时,我需要对选定的部分/选定的行执行实时连续更新。必须为每个实时更新构建整个数据源快照,似乎效率不高。

如果可以的话,我可以知道涉及的步骤是什么吗?

如果那不可能,是因为 UICollectionViewDiffableDataSource 框架的设计决定吗?

自 iOS15 以来,我们有一种有效的方法来更新所选项目行

private func reconfigureRecordingRow(_ recording: Recording) {
    var snapshot = dataSource.snapshot()
    snapshot.reconfigureItems([recording])
    dataSource.apply(snapshot)
}

private func makeDataSource() -> DataSource {
    let dataSource = DataSource(
        collectionView: collectionView,
        cellProvider: { [weak self] (collectionView, indexPath, anyHashable) -> UICollectionViewCell? in
            guard let self = self else { return nil }

            guard let recordingCell = collectionView.dequeueReusableCell(
                withReuseIdentifier: "recording",
                for: indexPath) as? RecordingCell else {
                return nil
            }

调用reconfigureRecordingRow时,会执行cellProvider的函数

collectionView.dequeueReusableCell 能够 re-use existing UICollectionViewCell,无需构建新的 UICollectionViewCell