Comment charger une image de manière asynchrone ? avec RxSwift
Résumé: Cette version permet de charger une image de manière asynchrone depuis une URL avec RxSwift
Description
On utilise pour cela les helpers définis dans mon post précédent: A RxSwift helper for network calls, JSON decoding and image decoding
L’operation de chargement des données depuis le réseau et celle de décodage en tâche de fond sont combinées à l’aide de l’opérateur flatMap.
L’implementation repose sur URLSession pour le téléchargement et sur NSCache pour cacher les images. De plus, un niveau de cache supplémentaire URLCache sert à cacher les réponses du réseau.
AsyncImageLoader.swift
L’interface publique est plutôt simple:
fetchObservable: Cette methode retourne un observable de typeSingle<UIImage>à partir de l’url fournie
CameraRollCell.swift
Un exemple d’utilisation ce chargement d’image dans une UICollectionViewCell.
Note: ici, l’utilisation du DisposeBag permet d’annuler un chargement déjà en cours lors d’un défilement par exemple.