Prévenir NSURLSession de la mise en cache des réponses

Pourquoi il cache des réponses. Il retourne au préalable extrait des réponses. Il fonctionne même si la désactivation de la connexion réseau. Réinitialiser le simulateur iOS n'a pas l'air de fonctionner non plus. Faire une demande, puis de nouveau avec internet en mode hors connexion n'travail (mise en cache).

public let urlSession: NSURLSession

public init()
{
    //...

    var configuration = NSURLSessionConfiguration.defaultSessionConfiguration()
    configuration.requestCachePolicy = NSURLRequestCachePolicy.ReloadIgnoringLocalCacheData
    urlSession = NSURLSession(configuration: configuration)
}

func makeRequest(path: String, httpMethod:String, body:String?, baseUrl: String?, headers:[String:String]=[:], callback: JsonRequestCallback)
{
    let urlString = (baseUrl ?? customOAuth2Manager.API_URL) + path
    let url = NSURL(string: urlString)
    let request = oauthInstance.request(forURL: url!)

    request.HTTPMethod = httpMethod
    self.customOAuth2Manager.setupRequest(request)

    for (key, value) in headers {
        request.setValue(value, forHTTPHeaderField:key)
    }

    if let body = body where body != "" {
        let postData = (body as NSString).dataUsingEncoding(NSUTF8StringEncoding)
        request.HTTPBody = postData
    }

    let task = urlSession.dataTaskWithRequest(request) { data, response, error in
        self.parseData(data, response:response, error:error, body:body, callback: callback)
    }
    task.resume()
}

Mise à jour

J'ai réussi à le résoudre en composant ce code à partir de didFinishLaunching dans le AppDelegate:

func removeUrlCache()
{
    NSURLCache.setSharedURLCache(NSURLCache(memoryCapacity: 0, diskCapacity: 0, diskPath: nil))
}

Cependant, je suis toujours curieux de savoir pourquoi mon code ne fonctionne pas. Il se sent aussi un peu moche pour désactiver le cache pour tous les app pour résoudre mon problème.

  • Merci!! Avez-vous découvrir plus à ce sujet?
  • ajouter configuration.URLCache à nil lors de la création de NSURLSessionConfiguration objet et les réponses ne seront pas mis en cache.
InformationsquelleAutor Sunkas | 2015-05-19