私のAPPの皆さん、NSURLCacheクラスを継承してキャッシュ用のカスタムクラスを作成し、ローカルファイルデータをキャッシュデータとして渡すために必要なメソッドを実装しました。このチュートリアルと同じようにしました
私のAPPには1つの更新ボタンがあり、それをクリックすると、現在のページを更新する必要があります。これは、ローカルに保存されたCSSおよびJSファイルをロードするために行った
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType{
if (isGoingToRefresh) {
[NSURLCache setSharedURLCache:cache];
isGoingToRefresh = NO;
return YES;
}
NSString *path = [mainWebView stringByEvaluatingJavaScriptFromString:@"window.location.pathname"];
path = [NSString stringWithFormat:@"%@%@",[[[AppDelegate sharedAppDelegate]configurationFile]objectForKey:@"RootURL"],path];
[NSURLCache setSharedURLCache:cache];
if ([path isEqualToString:[[request URL]absoluteString]]) {
[self showRefreshLoader];
isGoingToRefresh = YES;
NSURLRequest *localRequest = [NSURLRequest requestWithURL:[request URL] cachePolicy:NSURLRequestReturnCacheDataElseLoad timeoutInterval:240] ;
[webView loadRequest:localRequest];
return NO;
}
return YES;
}
上記のコードは、次の NSURLCache メソッドを呼び出してキャッシュからデータをロードしています -
- (NSCachedURLResponse *)cachedResponseForRequest:(NSURLRequest *)request
しかし、iOS4 の webView では、NSURLCache メソッドの上で呼び出されません。
理由がわかりません。良い解決策を提案してください。