在集合视图中删除项目的正确方法

correct way of deleting items in collection view

我有一个包含 20 个项目的集合视图,存储在图片数组中。我正在使用此代码删除选定的项目:

            self.collectionView.performBatchUpdates({
            let selectedItems = self.collectionView.indexPathsForSelectedItems()!
            self.picturesObject.deleteItemsAtIndexPaths(selectedItems)
            self.collectionView.deleteItemsAtIndexPaths(selectedItems)

            }, completion: {_ in})

这是 picturesObject 的 deleteItemsAtIndexPaths 的实现:

func deleteItemsAtIndexPaths(indexPaths:[NSIndexPath]){
        for indexPath in indexPaths{
            pictures.removeAtIndex(indexPath.item)
        }
    }

我面临的问题如下。每次删除集合视图中的选定项目时,图片数组都会变小。如果我删除第一项,则图片数组只有 19 项大。如果我尝试删除集合视图中的第 20 个项目,则数组索引超出范围,因为图片数组现在只有 19 个对象大,但我想删除存储在 indexpath.item 中的第 20 个对象。

在集合视图中删除项目的正确方法是什么?

EDIT:/// 集合视图方法

  func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int {
        collectionView.allowsMultipleSelection = true

        return 1
    }

    func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
        return picturesObject.pictures.count
    }

    func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
        let cell = collectionView.dequeueReusableCellWithReuseIdentifier("Cell", forIndexPath: indexPath) as! ShopCell
        cell.imageView.image = picturesObject.pictures[indexPath.item]

        return cell
    }

deleteItemsAtIndexPaths 中遍历数组之前,请按降序对 indexPaths 进行排序。那么,如果你删除了第19条,那么接下来删除的肯定是小于19的