首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >高效地创建包含大量部分和项目的NSDiffableDataSourceSnapshot

高效地创建包含大量部分和项目的NSDiffableDataSourceSnapshot
EN

Stack Overflow用户
提问于 2019-07-07 00:46:43
回答 1查看 795关注 0票数 1

假设需要创建一个静态集合视图,该视图包含数百个部分中的数十万个项,那么如何有效地创建NSDiffableDataSourceSnapshot

在苹果的示例代码UsingCollectionViewCompositionalLayoutsAndDiffableDataSources中,它们遵循以下模式:

代码语言:javascript
复制
let itemsPerSection = 1000
let sections = Array(0..<250)
var snapshot = NSDiffableDataSourceSnapshot<Int, Int>()
var itemOffset = 0
sections.forEach {
    snapshot.appendSections([$0])
    snapshot.appendItems(Array(itemOffset..<itemOffset + itemsPerSection))
    itemOffset += itemsPerSection
}

每个部分和项目都必须是唯一的标识符。低效率来自于创建一个包含1000个Int的数组,然后执行250倍的操作。在这个例子中,在我的设备上生成它大约需要12秒。

有没有一种不同的方法来高效地生成这种结构,有什么方法可以避免预先生成它,或者这对于快照的体系结构来说是不可能的吗?

EN

回答 1

Stack Overflow用户

发布于 2019-07-24 07:20:45

您可以像使用传统数据源一样以增量方式构建快照。首先,使用初始项目创建快照,并在确定需要更多项目时,使用其他项目重新构建快照。

如果您不想在每次添加更多项时从头开始重新构建快照,则可以从其不同数据源的snapshot()函数中获取表的现有快照,然后使用快照的函数(如insertItemsinsertSections等)手动添加其他项。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56915985

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档