PHAssetChangeRequest.deleteAssets 관련 질문입니다.

2 답변 글타래를 보이고 있습니다
  • 글쓴이
    • 주명 장
      참가자
      • 글작성 : 3
      • 답글작성 : 3

      ColldectionView에서 PHAsset을 여러개로 선택하고  해당 인텍스 값을 어레이값을 지정한 후에 해당 엘범의 에셋에 접근해서 삭제하려 아래와 같이 코드를 작성 해봤는데 얼럿이 선택한 수 만큼 나오길래

      @IBAction func deleteBtnAction(_ sender: Any) {

              for (key, value) in dictionarySelectedIndexPath {

                  if value {

                      deletedNeededIndexPath.append(key)

                  }

              }

              for i in deletedNeededIndexPath.sorted(by: { $0.item > $1.item}) {

                  sortedAlbum(true)

                  guard let asset : PHAsset = self.fetchReuslt?.object(at: i.item) else { return }

                  let assetArray : NSArray = [asset]

                  PHPhotoLibrary.shared().performChanges({PHAssetChangeRequest.deleteAssets(assetArray)}, completionHandler: nil)

       

              }

              AssetCollectionView.deleteItems(at: deletedNeededIndexPath)

         }

      for in때문에 하나씩 진행되서 그렇군아 하고 어레이를 만들어왔는데 아래와 같은  에러가 나왔습니다. 

       

      [PhotoKit] No photos access scope requirements declared for changes

       

      선택된 사진이 없다고 합니다……

      @IBAction func deleteBtnAction(_ sender: Any) {

              for (key, value) in dictionarySelectedIndexPath {

                  if value {

                      deletedNeededIndexPath.append(key)

                  }

              }

              

              var assetArray : NSArray = []

              

              for i in deletedNeededIndexPath.sorted(by: { $0.item > $1.item}) {

                  sortedAlbum(true)

                  guard let asset : PHAsset = self.fetchReuslt?.object(at: i.item) else { return }

                  assetArray.adding(asset)

       

              }

          

              PHPhotoLibrary.shared().performChanges({PHAssetChangeRequest.deleteAssets(assetArray)}, completionHandler: nil)

              AssetCollectionView.deleteItems(at: deletedNeededIndexPath)

              

          }

       

      이럴때는 어떻게 해야하나요?

      • 이 게시글은 주명 장에 의해 3 years, 1 month 전에 수정됐습니다.
    • 주명 장
      참가자
      • 글작성 : 3
      • 답글작성 : 3

      let assetArray : NSMutableArray = NSMutableArray()

      for i in deletedNeededIndexPath.sorted(by: { $0.item > $1.item}) {
      sortedAlbum(true)
      guard let asset : PHAsset = self.fetchReuslt?.object(at: i.item) else { return }
      assetArray.addObjects(from: [asset])

      }

      PHPhotoLibrary.shared().performChanges({PHAssetChangeRequest.deleteAssets(assetArray)}, completionHandler: nil)
      AssetCollectionView.deleteItems(at: deletedNeededIndexPath)

       

      이렇게 변경하여 해결하였습니다!

    • 야곰
      키 마스터
      • 글작성 : 37
      • 답글작성 : 580

      자문자답! 최고네요!

2 답변 글타래를 보이고 있습니다
  • 답변은 로그인 후 가능합니다.

logo landscape small

사업자번호 : 743-81-02195
통신판매업 신고번호 : 제 2022-충북청주-1278 호
고객센터 : 카카오톡채널 @yagom