Я установил политику кэширования для запроса в Alamofire игнорировать локальный кеш.
Затем я загружу viewcontroller с сетевым подключением, затем отключу сетевое подключение, убейте приложение и запустите его снова.
Теперь не отображается доступная сетевая ошибка (т.е. alamofire не создает объект nserror), а приложение работает так, как если бы запрос успешно получал данные из кеша. И странно, когда я пытался проверить кэшированные данные, используя
NSURLCache.sharedURLCache().cachedResponseForRequest(request)
nil возвращается, хотя данные были из кеша.
Единственный способ предотвратить кешированные ответы - выполнить NSURLCache.sharedURLCache().removeAllCachedResponses()
let request = NSURLRequest(URL: NSURL(string: url)!, cachePolicy: NSURLRequestCachePolicy.ReloadIgnoringLocalAndRemoteCacheData, timeoutInterval: 100)
Alamofire.manager.request(method, request, parameters:params)
.responseJSON { (request, response, data, error) in
if let anError = error {
if anError.code == NSURLErrorNotConnectedToInternet {
UIAlertView(title: "Alert", message: "No Network Connection Available", delegate: nil, cancelButtonTitle: "ok").show()
}
} else if let data: AnyObject = data {
println(NSURLCache.sharedURLCache().cachedResponseForRequest(request))
//prints nil
}
}
}
Что я хочу сделать, это загружать данные из кеша, только если сетевое соединение недоступно, что-то вроде ограниченного автономного режима. Как это сделать?