Я использую AFNetworking в своем приложении и пытаюсь заставить его работать в автономном режиме, используя кэшированные данные, если они доступны.
Я ожидал, что после того, как я установил политику кэширования запросов на NSURLRequestReturnCacheDataDontLoad, getPath:parameters:success:failure: будет успешно работать с кэшированными данными в автономном режиме. Однако, даже если в кеше есть данные (я проверял, проверяя кеш с кодом), getPath просто не получится в авиарежиме.
В github AFNetworking была ветка: https://github.com/AFNetworking/AFNetworking/issues/378 Но казалось, что проблема вообще не решена. Автор AFNetworking просто указывает на документ Apple, и в нем говорилось:
NSURLRequestReturnCacheDataDontLoad Указывает, что существующие данные кэша должны использоваться для удовлетворения запроса, независимо от его возраста или даты истечения срока действия. Если в кэше нет существующих данных, соответствующих запросу на загрузку URL-адреса, не предпринимается никаких попыток загрузить данные из исходного источника, и загрузка считается неудачной. Эта константа определяет поведение, аналогичное «автономному» режиму.
Как заявила Apple, NSURLRequestReturnCacheDataDontLoad как раз и предназначен для автономного режима.
Я тестирую в iOS6, я тестировал как NSURLCache, так и SDURLCache, все они имеют одинаковый результат.
Запрос не выполнен, сообщение об ошибке:
22-12-2012 03:11:18.988 Ошибка Testapp[43692:907]: Домен ошибки=NSURLErrorDomain Code=-1009 «Подключение к Интернету отключено». UserInfo=0x211b87c0 {NSErrorFailingURLStringKey=http://Testapp.com/api/v1/photo/latest/, NSErrorFailingURLKey=http://Testapp.com/api/v1/photo/latest/, NSLocalizedDescription=Интернет-соединение offline., NSUunderlyingError=0x211b9720 "Подключение к Интернету отключено."}