Wie cache-Bilder mit URLSession in Swift

Ich würde gerne verbessern Sie den code unten, um die cache-Bilder nur herunterladen, wenn Sie noch nicht zwischengespeichert wurde, zuvor. Ich kann nicht scheinen zu finden, eine gute Beispiele, wie URLSession Objekt, dies zu tun.

extension UIImageView {
    func loadImageWithURL(_ url: URL) -> URLSessionDownloadTask {
        let session = URLSession.shared

        let downloadTask = session.downloadTask(with: url, completionHandler: { [weak self] url, response, error in

            if error == nil, let url = url,
                let data = try? Data(contentsOf: url), let image = UIImage(data: data) {

                    DispatchQueue.main.async {
                        if let strongSelf = self {
                            strongSelf.image = image
                        }
                    }
            }
        })
        downloadTask.resume()
        return downloadTask
    }
}
  • nshipster.com/nsurlcache
  • Nicht verwandt, Ihre if let strongSelf = self { strongSelf.image = image } kann vereinfacht werden zu self?.image = image.
  • FWIW, NSURLCache wird der cache nach dem, was geliefert wird, in die Header der server-Antwort. Es ist auch einschränken cache entsprechend schlecht dokumentiert Regeln, vor allem, wenn ein download mehr als 5% des Gesamt-cache, es wird nicht zwischengespeichert werden, unabhängig davon, was der server die Header sagen (dies ist ein Grund für die Beule, die cache-Größe als die in dem link von Leo zur Verfügung gestellt).
Schreibe einen Kommentar