Swift3: удаление всего PHFetchResult <PHAsset>в цикле while - PullRequest
0 голосов
/ 05 октября 2018

У меня есть 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 фотографии в альбоме, и я выхожу из цикла while, когда это <4 </p>

  • , удаления не синхронизируются (даже если яЯ использую DispatchGroup)

  • У меня есть запрос на удаление только первого изображения каждый раз (если я изменяю свой выходной цикл while на count-1)

есть ли другой способ просто удалить каждый актив в коллекции?

...