当拥有更大的数据集(大约 22,000 个项目)时,我遇到了 diffable 数据源的性能问题。我很惊讶在动画打开时应用快照需要这么多时间。见代码部分:
let shouldAnimate = tableView.numberOfSections != 0
apply(snapshot as NSDiffableDataSourceSnapshot<String, NSManagedObjectID>, animatingDifferences: shouldAnimate)
注意:Jesse Squires 提供了一个很好的资源:
我的问题是,鉴于应用快照是 O(n) 操作,我是否遗漏了某些东西或可区分的数据源无法更快地处理这个问题?
关闭动画,与 一样reloadData
,会有所帮助。
示例代码是由SwiftLee根据这篇文章设置的。
请在此处查看示例项目。
示例视频在这里。
更新(2021 年 9 月 2 日):这里有一个很好的 Twitter 讨论。
旁注:可以通过不设置 来改进示例应用程序,fetchBatchSize
因为请求与NSFetchedResultsController
. 见链接。