您可以通过使用URLSession请求图像数据,然后使用其完成处理程序中可用的数据和响应来使用URLCache,例如:
  
  import UIKit
class GalleryCollectionViewController: UICollectionViewController, UICollectionViewDragDelegate, UICollectionViewDropDelegate, UICollectionViewDelegateFlowLayout {
 // MARK: - Model
 var gallery: Gallery?
 // MARK: - Properties
 private var cache = URLCache.shared
 private var session = URLSession(configuration: .default)
 override func viewDidLoad() {
    super.viewDidLoad()
    cache = URLCache(memoryCapacity: 100, diskCapacity: 100, diskPath: nil) // replace capacities with your own values
 }
 override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "GalleryCell", for: indexPath)
    if let galleryCell = cell as? GalleryCollectionViewCell {
        galleryCell.image = nil
        galleryCell.imageView.isHidden = true
        if let url = gallery?.images[indexPath.item].url {
            let request = URLRequest(url: url.imageURL) // imageURL from Utilities.swift of Stanford iOS course
            if let cachedResponse = cache.cachedResponse(for: request), let image = UIImage(data: cachedResponse.data) {
                galleryCell.image = image
                galleryCell.imageView.isHidden = false
            } else {
                DispatchQueue.global(qos: .userInitiated).async { [weak self, weak galleryCell] in
                    let task = self?.session.dataTask(with: request) { (urlData, urlResponse, urlError) in
                        DispatchQueue.main.async {
                            if urlError != nil { print("Data request failed with error \(urlError!)") }
                            if let data = urlData, let image = UIImage(data: data) {
                                if let response = urlResponse {
                                    self?.cache.storeCachedResponse(CachedURLResponse(response: response, data: data), for: request)
                                }
                                galleryCell?.image = image
                            } else {
                                galleryCell?.image = UIImage(named: "placeholder")
                            }
                            galleryCell?.imageView.isHidden = false
                        }
                    }
                    task?.resume()
                }
            }
        }
    }
    return cell
 }
}