Utiliser les données de base comme le cache du navigateur dans AFNetworking
-
28-10-2019 - |
Question
J'ai lu quelque chose sur l'accès multi thread sur DB, mais toujours pas sûr de la meilleure façon de le faire pour la lecture / écriture en liaison avec le réseau async téléchargement. Par exemple, je vais avoir une page avec des images à partir du Web, donc je les récupérer par leurs URL, en utilisant AFNetworking mais je veux vérifier d'abord sur mon DB et écrire sur (ou disque) l'image récupérée pour une utilisation future. Que peut-être la meilleure façon de le faire sans bloquer l'interface utilisateur (comme lors du défilement)? Si je le fais avec un singleton qui lit / écrit il bloque le thread principal. Merci pour des conseils à ce sujet.
La solution
AFNetworking est pas l'outil pour cela. Au lieu de cela, vous pouvez profiter de la fonctionnalité intégrée de NSURLCache
- en particulier SDURLCache.
En -applicationDidFinishLaunchingWithOptions:
, faire NSURLCache +setSharedCache:
avec une instance de SDURLCache
(avec une certaine quantité d'espace disque alloué). Toutes les demandes faites par UIWebView
(et AFNetworking
, pour cette matière) seront automatiquement acheminés par NSURLCache
avant que la demande est faite pour vérifier le cache. Il est discret, sans rendez-vous, et suit correctement les directives du cache, et il devrait résoudre votre problème tout à fait bien.