2017-06-24 2 views
0

J'ai essayé d'obtenir la mise en cache d'un fichier que je télécharge à partir d'une URL. Le fichier a une taille d'environ 5 Mo. ci-dessous est l'en-tête que j'obtenir de cette URL du fichier:Comment mettre en cache une demande de téléchargement de fichier à l'aide d'Alamofire?

Content-Type : application/x-zip-compressed 
Content-Length : 4088083 
Expires : Sun, 24 Jun 2018 20:10:51 GMT 
Etag : "1e2ec46bcg24f13" 
X-Powered-By : ASP.NET 
Last-Modified : Thu, 22 Jun 2017 11:21:48 GMT 
Accept-Ranges : bytes 
Server : Microsoft-IIS/8.0 
Date : Sat, 24 Jun 2017 20:10:48 GMT 
Cache-Control : public,max-age=31536000 

J'utilise comme suit pour créer la demande de téléchargement:

var request = URLRequest(url: URL(string: downloadUrl)!, cachePolicy: URLRequest.CachePolicy.returnCacheDataElseLoad, timeoutInterval: 120) 
request.addValue("public", forHTTPHeaderField: "Cache-Control") 

téléchargements de fichiers avec succès mais il n'est pas mis en mémoire cache. Lorsque je me déconnecte et que j'essaie de télécharger, j'obtiens 'La connexion Internet semble être hors ligne. 'erreur.

J'ai essayé de changer Urlcache comme ci-dessous de AppDelegate didFinishLaunch

let urlCache = URLCache(memoryCapacity: 4 * 1024 * 1024, diskCapacity: 20 * 1024 * 1024, diskPath: nil) 
URLCache.shared = urlCache 

Mais pas de chance. Merci d'avance.

Répondre

0

je pense qu'il est aussi simple que cela:

let request = isNetwork ? 
    NSURLRequest(url: downloadUrl! as URL): 
    NSURLRequest(url: downloadUrl! as URL,cachePolicy:.returnCacheDataDontLoad, timeoutInterval:1); 

où ISNetwork est vrai si vous détectez un réseau est disponible.