我正在执行batchUpdate,
这是我的代码
if let footerIndex = self.collectionView.feeds.index(forKey: "footer") {
self.collectionView.performBatchUpdates {
self.collectionView.totalSections += 1
self.collectionView.insertSections([footerIndex], animationStyle: .none)
self.collectionView.insertItemsAtIndexPaths([IndexPath.init(row: 0, section: footerIndex)], animationStyle: .none)
}
}
在所有早期的 ios 版本中它都可以工作,但 iOS 17 会崩溃
*** 由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“检测到无效的批量更新:执行批量更新之前和之后数据源返回的部分和/或项目的数量与更新不一致。 更新前的数据源 = { 47 个部分,项目计数:[1, 3, 1, 3, 1, 3, 1, 3, 1, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3 , 1, 1, 3, 1, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 1, 3 , 1, 3, 1] } 更新后的数据源 = { 47 个部分,项目计数:[1, 11, 1, 3, 1, 3, 1, 3, 1, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3 , 1, 1, 3, 1, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 1, 3 , 1, 3, 1] } 更新=[ 插入项目 (1 - 0), 插入项目 (1 - 1), 插入项目 (1 - 2), 插入项目 (1 - 3), 插入项目 (1 - 4), 插入项目 (1 - 5), 插入项目 (1 - 6), 插入项目 (1 - 7), 插入项目 (1 - 8), 插入项目 (1 - 9), 插入项目 (1 - 10) ]
这是错误,iOS 17 有解决办法吗
一般来说,修行应该以三种方式进行:
collectionView.reloadData ()
请始终使用数组来追加/删除项目,然后更新 collectionView。