Lire l'image du cache pour l'application ios avec swift

Je suis en train de lire des images de mon stockage Firebase – ce qui fonctionne bien.

J'ai mis en place une caching pour lire les images du cache lorsqu'il a été lu depuis le stockage:

// Storage.imageCache.object(forKey: post.imageUrl as NSSsortingng) static func getImage(with url: Ssortingng, completionHandler: @escaping (UIImage) -> ()) { if let image = imageCache.object(forKey: url as NSSsortingng) { print("CACHE: Unable to read image from CACHE ") completionHandler(image) } else { let ref = FIRStorage.storage().reference(forURL: url) ref.data(withMaxSize: 2 * 1024 * 1024) { (data, error) in if let error = error { print("STORAGE: Unable to read image from storage \(error)") } else if let data = data { print("STORAGE: Image read from storage") if let image = UIImage(data: data) { // Caches the image Storage.imageCache.setObject(image, forKey: url as NSSsortingng) completionHandler(image) } } } } } } 

Mais ça ne marche pas. Cela ne semble pas fonctionner du tout, je n'ai pas le message 'print ("CACHE: Impossible de lire l'image de CACHE")' affiché sur ma console mais l'printing 'print ("STOCKAGE: Image lue depuis le stockage ")"

Savez-vous comment cela peut être réalisé par hasard s'il vous plaît?

Merci beaucoup pour votre time!

—MODIFIER —

J'appelle l'image dans la vue de cellule de table du stockage de Firebase alors comme:

 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = self.feedTableView.dequeueReusableCell(withIdentifier: "MessageCell")! as UITableViewCell let imageView = cell.viewWithTag(1) as! UIImageView let titleLabel = cell.viewWithTag(2) as! UILabel let linkLabel = cell.viewWithTag(3) as! UILabel titleLabel.text = posts[indexPath.row].title titleLabel.numberOfLines = 0 linkLabel.text = posts[indexPath.row].link linkLabel.numberOfLines = 0 Storage.getImage(with: posts[indexPath.row].imageUrl){ postPic in imageView.image = postPic } return cell } 

Vous pouvez réaliser des images de caching avec Kingfisher par exemple. Et fonctionne mieux. lien

Comment utiliser: Ajouter un lien vers votre image depuis le stockage vers le noeud de l'élément de database. Comme ça:

entrez la description de l'image ici

Ensuite, il suffit de l'utiliser pour présenter et mettre en cache l'image.

Exemple:

  let imageView = UIImageView(frame: frame) // init with frame for example imageView.kf.setImage(with: <urlForYourImageFromFireBase>) //Using kf for caching images 

J'espère que cela aide