Lined Notebook

PHImageManager의 requestImage의 image가 nil로 오는 문제..

by 사슴비행기

잘 되던 로직이 갑자기 안돼기 시작해서 디버깅을 해보니

            PHImageManager.default().requestImage(for: selectedImages[i], targetSize: /*CGSize(width: 200, height: 200)*/PHImageManagerMaximumSize, contentMode: .aspectFit, options: option) { result, info in
                thumbnail = result!
            }

이 부분에서 result가 nil로 와서 문제가 생기는 거였다.

하지만 해당 이슈를 아무리 검색해봐도 찾지 못하다가

한 stackoverflow를 정독하면서 해결방법을 찾았다.

하지만 이유는 모르겠다... 그냥 답변으로 준 것들을 다 돌려보다가..

일단 해당 글의 주소: https://stackoverflow.com/a/42871050

 

PHImageManager requestImageForAsset returns nil sometimes for iCloud photos

Roughly 10% of the time PHImageManager.defaultManager().requestImageForAsset returns nil instead of a valid UIImage after first returning a valid though "degraded" UIImage. No error or other clue t...

stackoverflow.com

 

            PHCachingImageManager().requestImage(for: self.selectedImages[i],
                                          targetSize: PHImageManagerMaximumSize,
                                         contentMode: .aspectFit,
                                             options: option,
                                       resultHandler: { (image, info) in
                    if (image == nil) {
                        print("Error loading image")
                        print("\(info)")
                    } else {
                        thumbnail = image!
                    }
                })

이렇게 수정하니 정상적으로 이미지가 내려온다.

이 답변을 준 사람도 이유를 모르겠다고 한다..

이 방법으로 하면 메모리 문제가 생길 수 있다는 것 같은데.. 일단 nil로 내려와서 앱이 죽는 것보다는 나을 것 같아서

이 방법으로 쓰면서 해결법을 찾아볼 생각이다 ㅠ

와 이거 때매 어제 막차 타고 환승역에서 차가 없어서 택시 탔다...ㅠㅠㅠㅠㅠㅠㅠ

 

블로그의 정보

Beautiful Coding

사슴비행기

활동하기