我在尝试重新加载我的 UICollectionView 时遇到
NSInternalInconsistencyException
。错误消息指出“检测到无效的批次更新:数据源在执行批次更新之前和/或之后返回的部分和/或项目的数量与更新不一致。”只有在我使用 Xcode 构建我的应用程序时才会发生异常。但是,当我从 TestFlight 安装完全相同的代码时,一切都按预期工作。
我相信这个问题与将不同的数据传递给集合视图有关,而不是以前的数据,即使它应该是相同的。异常发生在如下所示的 updateCollection() 函数中。
代码片段:
@objc private func updateCollection() {
let oldResults = viewModel.results
self.viewModel.updateData { [weak self] in
if let newResults = self?.viewModel.results {
let changes = diff(old: oldResults, new: newResults)
self?.collectionView.reload(changes: changes, section: 0, updateData: {
self?.viewModel.results = newResults
}, completion: { isFinished in
if isFinished {
self?.collectionView.reloadData()
self?.updateEmptyHomeView()
}
})
}
}
}
func updateData(completion: @escaping () -> ()) {
results.removeAll()
let uid = self.id
if let user = DataManager.getUser(id: uid) {
self.results = user.getData()
completion()
} else {
completion()
}
}
任何人都可以帮助我确定可能导致这种不一致的原因以及为什么只有在我在 Xcode 中构建应用程序时才会出现这种情况吗?谢谢。