[swift] SDWebImage를 사용하여 이미지 다운로드 중에 보고서를 작성하는 방법은 무엇인가요?
import SDWebImage

class ImageDownloader: NSObject, SDWebImageDownloaderDelegate {
    var progressBlock: ((Int, Int) -> Void)?

    func downloadImage(withURL url: URL) {
        let downloader = SDWebImageDownloader.shared
        downloader.delegate = self
        downloader.downloadImage(with: url, options: [], progress: nil) { [weak self] (image, _, _, _) in
            // 이미지 다운로드가 완료되면 실행되는 코드
            // 다운로드된 이미지를 사용할 수 있습니다.
        }
    }

    // SDWebImageDownloaderDelegate의 메소드를 구현하여 진행 상황을 보고서로 작성합니다.
    func imageDownloader(_ downloader: SDWebImageDownloader, didReceive response: URLResponse) {
        if let response = response as? HTTPURLResponse {
            let totalSize = response.expectedContentLength
            let progressBlock: (Int, Int) -> Void = { (receivedSize, expectedSize) in
                // 현재 다운로드된 크기와 전체 크기를 사용하여 진행 상황을 계산합니다.
                let progress = Float(receivedSize) / Float(expectedSize) * 100
                let roundedProgress = Int(progress)
                
                // 진행 상황을 보고서로 전달합니다.
                self?.progressBlock?(roundedProgress, Int(totalSize))
            }
            
            self.progressBlock = progressBlock
        }
    }
}

위의 예시 코드는 SDWebImage를 사용하여 이미지를 다운로드하는 ImageDownloader 클래스를 보여줍니다. downloadImage(withURL:) 메소드를 호출하여 이미지 URL을 전달하면, SDWebImage를 통해 이미지를 다운로드하고 다운로드 진행 상황을 보고서로 전달합니다.

이미지 다운로드 진행 상황은 progressBlock 클로저를 통해 전달됩니다. 진행 상황을 나타내는 숫자 형태로 전달하기 위해 0부터 100 사이의 값으로 변환되며, totalSize 매개 변수를 통해 전체 이미지 크기를 얻을 수 있습니다.

이제 ImageDownloader 클래스를 사용하여 이미지를 다운로드하고, 다운로드 진행 상황을 보고서로 받을 수 있습니다.

더 자세한 내용은 SDWebImage 공식문서를 참조해주세요.