试图理解URLSession dataTask缓存

时间:2017-05-11 12:14:25

标签: ios swift caching nsurlsessiondatatask urlsession

我正在使用下面缓存图片的代码从网站下载图像。我是否需要将图像存储在apps目录中以永久保存它们?

运行此代码后,我可以将设备设置为飞行模式,重新启动它,然后打开应用程序,图像仍然存在。我很困惑。我认为缓存只是暂时的?这个图像保存在哪里,最重要的是保存了多长时间?

我已阅读Apple的URL会话编程指南,但它没有回答这些问题。

func getImageFromWeb(_ urlString: String, closure: @escaping (UIImage?) -> Void) {
    guard let url = URL(string: urlString) else {
        return closure(nil)
    }

    let task = URLSession(configuration: .default).dataTask(with: url) { (data, response, error) in
        guard error == nil else {
            print("error: \(String(describing: error))")
            return closure(nil)
        }
        guard response != nil else {
            print("no response")
            return closure(nil)
        }
        guard data != nil else {
            print("no data")
            return closure(nil)
        }
        DispatchQueue.main.async {
            closure(UIImage(data: data!))
        }
    }; task.resume()
}

功能调用:

getImageFromWeb("http://www.apple.com/euro/ios/ios8/a/generic/images/og.png") { (image) in
    if let image = image {
        // Do something with image
    }
}

0 个答案:

没有答案