2016-02-18 2 views
0

Можно ли использовать NSURLCache для кэширования ответов, когда URL-адрес включает в себя изменяющийся элемент запроса? Например, мы добавляем необходимый элемент запроса «sig = XXXXX» Mashery, который изменяется для каждого запроса.NSURLCache с изменением Mashery "sig = XXXXXX" элемент запроса

Если нет, есть ли обходной путь?

ответ

0

Решено путем подкласса NSURLCache и переопределения его методов кеширования.

В каждом переопределенном методе я удаляю элемент запроса из запроса до вызова метода суперкласса.

Например:

override func storeCachedResponse(cachedResponse: NSCachedURLResponse, forRequest request: NSURLRequest) { 
     let strippedRequest = removeQueryItemFromRequest(self.queryItemName, request: request) 

     if let url = strippedRequest.URL { 
      let response = NSURLResponse(URL: url, MIMEType: cachedResponse.response.MIMEType, expectedContentLength: Int(cachedResponse.response.expectedContentLength), textEncodingName: cachedResponse.response.textEncodingName) 
      let newCachedResponse = NSCachedURLResponse(response: response, data: cachedResponse.data) 

      super.storeCachedResponse(newCachedResponse, forRequest: strippedRequest) 
     } 
     else { 
      super.storeCachedResponse(cachedResponse, forRequest: request) 
     } 
    } 

self.queryItemName хранимое имущество переходили в к пользовательскому инициализатору.

 Смежные вопросы

  • Нет связанных вопросов^_^