我的收藏视图和重新加载/插入项目有问题。我在视图控制器中有我的items数组,其中包含UICollectionView
。我在很多地方更改了items数组的内容。有时我会插入新项目,有时我必须从数据库中重新加载项目。
不是所有的时间,但有时我得到"经典"插入新项目时出错:
无效更新:第0部分中的项目数无效 更新(16)后现有部分中包含的项目必须是 等于该部分之前包含的项目数 更新(16),加上或减去插入或删除的项目数 该部分(1个插入,0个删除)和加号或减号的数量 移入或移出该部分的物品(0移入,0移出)。
我知道这个错误的意思但是很难解决这个问题,因为我写的时候我可以收到通知然后立即重新加载数据(从数据库中获取项目并重新加载集合视图)并且插入时可能会发生这种情况新项目和类似的冲突可能会发生。
所以我不确定什么是最佳解决方案。我应该锁定数组并使其线程安全(但我认为我主要在主线程中编辑它)或者我应该以某种方式"锁定"收集,当有插入操作时,无法更改项目或集合视图无法重新加载?还是有其他解决方案吗?
奖励:当上述错误发生时,应用程序是否可能崩溃并且只是完全重新加载集合视图?可能不是,但它可以帮助很多。