Jor*_*n H 3 uicollectionview ios13
考虑到需要创建一个包含数百个部分的数十万项的静态集合视图,如何有效地创建NSDiffableDataSourceSnapshot?
在Apple的示例代码中,UsingCollectionViewCompositionalLayoutsAndDiffableDataSources它们遵循以下模式:
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
}
Run Code Online (Sandbox Code Playgroud)
每个部分和项目都必须是唯一的标识符。效率低下的原因在于创建 1000 个数组Int,并执行 250 倍。在此示例中,在我的设备上生成大约需要 12 秒。
是否有不同的方法可以有效地生成此结构,是否有任何方法可以避免预先生成它,或者这对于快照架构来说是不可能的吗?
小智 5
您可以像使用传统数据源一样逐步构建快照。首先,使用初始项目创建快照,当您确定需要更多项目时,使用附加项目重建快照。
\n\n如果您不想每次添加更多项目时都从头开始重建快照,则可以从其 diffable 数据源 xe2x80x99s 函数获取表 xe2x80x99s 现有快照,snapshot()然后使用 snapshot\xe2\x80\x99s 函数手动添加附加项目,例如insertItems、insertSections等。
| 归档时间: |
|
| 查看次数: |
1411 次 |
| 最近记录: |