0

私の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 メソッドの上で呼び出されません。

理由がわかりません。良い解決策を提案してください。

4

1 に答える 1

0

を使用してリクエストしてみてください

NSURLRequest *theRequest = [NSURLRequest requestWithURL:url 
                                            cachePolicy:NSURLCacheStorageAllowed 
                                        timeoutInterval:60];
于 2012-04-27T13:44:06.137 に答える