Swift indexPath数组计算

Swift indexPath array calculations

我正在尝试研究如何使用 .map 为 peformBatchUpdates 函数修改 collectionView 中的插入 indexPaths

假设我在 collectionView 中有项目 1 2 3 4 5 6 7 和要删除的 indexPaths 数组

▿ 2 elements
  ▿ 0 : 2 elements
    - 0 : 0
    - 1 : 0
  ▿ 1 : 2 elements
    - 0 : 0
    - 1 : 1

和用于插入的索引路径数组

▿ 2 elements
  ▿ 0 : 2 elements
    - 0 : 0
    - 1 : 3
  ▿ 1 : 2 elements
    - 0 : 0
    - 1 : 4

我认为需要在执行删除后计算 performBatchUpdates 操作的插入索引路径,因此看到删除的是 collectionView 项中的前 2 项,需要减少 insertionIndexPaths 的 indexPath.item通过 2 让它们插入正确的位置,即我希望最终的 insertionIndexPaths 是 ...

▿ 2 elements
  ▿ 0 : 2 elements
    - 0 : 0
    - 1 : 1
  ▿ 1 : 2 elements
    - 0 : 0
    - 1 : 2

基本上我想我需要检查 insertionIndexPath 数组中的每个 indexPath.item,看看有多少 deletionIndexPaths 在那个 insertionIndexPath 前面,然后将 insertionIndexPath.item 减去那个数字。

如何在这些 insertionIndexPaths 上使用 .map 以获得正确的结果?

我可以用

            let adjustedPageDestinationIndexPaths = pageDestinationIndexPaths.map { ( indexPath ) -> IndexPath in
                return IndexPath(item: indexPath.item - pageSourceIndexPaths.filter { [=10=].item < indexPath.item }.count , section: 0)
            }

它为下面的示例提供了正确调整的 indexPaths,仅将 2 个项目从位置 0 和 1 移动到位置 3 和 4,但现在意识到在 collectionView 中一次移动的项目数量越多,数量就越大我需要跟踪以计算每个循环中的源 indexPath 和目标 indexPath 调整的项目。回到绘图板。