对于UITableView
s,插入,删除和移动操作的顺序在更新块内部无关紧要,因为它们在调用-endAnimations
之前不会执行,然后,它们将作为 batch update
我们说我有3个阵列:
- 删除(只是索引)
- 插入(索引+对象)
- 移动(两个指数)
我如何正确应用这个' delta'到现有数组,就像批量更新中的UITableView
一样?
答案 0 :(得分:2)
诀窍在于你保留一个字典(或数组,实际上)根据每次更改期间发生的事情来解释索引号。最初0表示0,1表示1,依此类推。但是如果你删除第1项,那么就说,那么2意味着1,3意味着2,等等 - 它上面的一切都必须被推倒,所以如果你要求用第2项交换东西,我们仍然可以找到你想要的对象在你说的时候用“2”。同样,如果你在第2项插入一些东西,那么它上面的所有东西都必须被推上去。
现在你可以进行删除,然后进行插入,然后进行移动。请注意,您必须以反向排序索引顺序执行删除(或使用索引集以便一次删除它们)和插入以正常排序顺序。