Url imageLoader(SwiftImageLoader)

url 이미지를 TableView Cell에서 불러오기 위해 검색해서 찾아낸 오픈 소스 입니다.

알 ImageLoader 파일을 추가 해 주세요.

class ImageLoader {

    let cache = NSCache<NSString, AnyObject>()

    class var sharedLoader : ImageLoader {
    struct Static {
        static let instance : ImageLoader = ImageLoader()
        }
        return Static.instance
    }

    func imageForUrl(urlString: String, completionHandler: @escaping (_ image: UIImage?, _ url: String) -> ()) {

        DispatchQueue.global(qos: .background).async {

            let data: NSData? = self.cache.object(forKey: urlString as NSString) as? NSData

            if let goodData = data {
                let image = UIImage(data: goodData as Data)
                DispatchQueue.main.async {
                    completionHandler(image, urlString)
                }
                return
            }

            let session = URLSession.shared
            let request = URLRequest(url: URL(string: urlString)!);

            session.dataTask(with: request) { data, response, error in

                if (error != nil) {
                    completionHandler(nil, urlString)
                    return
                }

                if let data = data{
                    let image = UIImage(data: data)
                    self.cache.setObject(data as AnyObject, forKey: urlString as NSString)
                    DispatchQueue.main.async {
                        completionHandler(image, urlString)
                    }
                }
            }.resume()

        }
    }
}

사용하는 소스는...

ImageLoader.sharedLoader.imageForUrl(urlString:"http://www.abc.kr/image.jpg", completionHandler:{(image: UIImage?, url: String) in
    self.imageView.image = image
})

완벽하진 않아요. 어쩌다 리스트에서 스크롤이 많이 될경우 이미지 위치가 달라질때가 있어요.....ㅠㅠ;

출처 : https://github.com/natelyman/SwiftImageLoader

results matching ""

    No results matching ""