[TIL] 식당 예약 어플 개발 - 4일차-

신승현·2024년 4월 29일

TIL

목록 보기
66/72
post-thumbnail

1️⃣ KingFisher 사용하기

외부 패키지인 KingFisher를 사용해 이미지를 불러오려고 했다.
원래는 카카오맵에서 식당사진을 불러오고 싶었지만, 카카오 REST API에서는 사진은 개인 재산권이기 때문에 REST API로는 받아올 수 없다고 했다.
그래서 사진은 개인적으로 다운 받아서 GitHub Repository에 저장해서 Repository에서 불러오기로 했다.

처음에는 이미지 파일을 SVG파일로 저장해서 불러오고 싶었는데, KingFisher를 이용해서는 SVG파일을 불러올 수 없어서 SVGKit도 같이 사용해서 이미지를 불러와야 했다. 하지만 왜인지 모르게 GitHub Repository에 SVG 이미지 파일을 업로드 하면 이미지파일이 깨져서 파일을 불러올 수 없었다.

결국 SVG이미지 파일로 받아오는 것은 포기하고 PNG파일로 이미지를 받아오도록 수정했다.

func downloadImage(placeName: String, completion: @escaping (UIImage?) -> Void) {
        guard let url = URL(string: "https://raw.githubusercontent.com/5ttuki-Curry/ImageStorage/main/\(placeName).png") else {
            print("Invalid URL")
            completion(nil)
            return
        }
        
        KingfisherManager.shared.retrieveImage(with: url, options: nil, progressBlock: nil) { result in
            switch result {
            case .success(let value):
                // 이미지 다운로드 성공, UIImage 반환
                DispatchQueue.main.async {
                    completion(value.image)
                }
            case .failure(let error):
                // 이미지 다운로드 실패
                print("Error downloading image: \(error)")
                DispatchQueue.main.async {
                    completion(UIImage(named: "NoImage"))
                }
            }
        }
    }
profile
개발자

0개의 댓글