Я не получаю кешированные результаты с использованием функции ASIHTTPRequest Cache. Я следовал указаниям из документации. Когда у меня есть доступ в Интернет, ниже работает отлично. В этот момент я включу режим самолета и закрою приложение из многозадачности. Когда я это делаю, я не получаю асинхронного вызова requestFinished. Я пробовал кучу политик кэширования, но это, похоже, не делает этого. У кого-нибудь есть идеи?ASIHTTPRequest Кэширование Не работает
Цель: получить кешированный ответ JSON без подключения к Интернету (после успешной загрузки из Интернета один раз).
- (void)viewDidLoad
{
if (!networkQueue) {
networkQueue = [[ASINetworkQueue alloc] init];
}
[networkQueue reset];
[networkQueue setRequestDidFinishSelector:@selector(imageFetchComplete:)];
[networkQueue setRequestDidFailSelector:@selector(imageFetchFailed:)];
[networkQueue setShowAccurateProgress:true];
[networkQueue setDelegate:self];
//Turn on default caching
[ASIHTTPRequest setDefaultCache:[ASIDownloadCache sharedCache]];
[self loadData];
[super viewDidLoad];
}
-(IBAction)loadData
{
NSURL *url = [NSURL URLWithString:@"http://SOME_JSON_URL"];
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
[request setDelegate:self];
[request setCacheStoragePolicy:ASICachePermanentlyCacheStoragePolicy];
[request startAsynchronous];
}
- (void)requestFinished:(ASIHTTPRequest *)request
{
if ([request didUseCachedResponse])
{
NSLog(@"Did use cache!");
}
NSString *responseString = [request responseString];
NSLog(@"%@", responseString);
}
@JiaYow: Получается, что если я явно установить срок годности [запрос setSecondsToCache: 60 * 60 * 24 * 30], его работает. Благодарю. – Ryan