Swift3:在while循环中删除所有PHFetchResult <phasset>

时间:2018-10-05 09:58:15

标签: swift3 phasset

我有一个PHAssetCollection(自定义相册),我想删除此相册中的所有图片。

我正在尝试执行while循环以删除集合中包含的每个资产,但是我遇到了多个问题。

这是我的代码:

var iter: Int = 0;
            let myGroup = DispatchGroup()

            while(iter < self.photosAsset.count){
                myGroup.enter()
                print("Deleting Asset \(iter):\(self.photosAsset[iter].description)")
                PHPhotoLibrary.shared().performChanges({PHAssetChangeRequest.deleteAssets([self.photosAsset[iter]] as NSArray)
                }, completionHandler: {(success, error) -> Void in
                    if success {
                        print("Asset \(iter) deleted")
                        myGroup.leave()
                    } else {
                        print("Error: \(String(describing: error))")
                    }
                })
                iter=iter+1;
            }//end while    

这是我面临的问题:

  • 我正面临一个超出范围(x)的异常索引(x),而我的相册中有4张照片,当它为<4

  • 时退出while循环
  • 删除操作不同步(即使我使用的是DispatchGroup)

  • 我每次都会提示仅删除第一张图片(如果我将while循环的退出情况更改为count-1)

还有其他方法可以简单地删除集合中的每个资产吗?

0 个答案:

没有答案