1

オンラインデータベースを更新することになっています。ネットワークがWi-Fiに接続されている場合、更新ボタンを押すとデータベースが更新されますが、ネットワークが3gに接続されている場合、データベースが更新される場合とされない場合があります。更新された場合、更新ボタンを押しても時間がかかります。キャッシュに問題があると思いますが、コードにキャッシュを入れる方法がわかりません。これが私のコードです。

- (void)downloadAtURLString:(NSString *)urlString
{
    NSMutableData *data = [[NSMutableData alloc] init];
    self.activeDownload = data;
    [data release];
    // encode the urlString with percent escapes
    NSString *urlStr = [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    NSURL *url = [[NSURL alloc] initWithString:urlStr];
    NSURLRequest *request = [[NSURLRequest alloc] initWithURL:url];
    NSURLConnection *conn = [[NSURLConnection alloc] initWithRequest:request delegate:self];
    self.urlConnection = conn;
    [conn release], [request release], [url release];
 }

私はこのコードを使ってみました:

NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:urlString] cachePolicy:NSURLRequestReturnCacheDataElseLoad timeoutInterval:30.0];

警告を受け取りました。cachePolicyは正しいですか?

4

1 に答える 1

0

これを試しましたか?この例では、リクエストのローカル キャッシュは無視されます。

- (void)downloadAtURLString:(NSString *)urlString
{
    NSMutableData *data = [[NSMutableData alloc] init];
    self.activeDownload = data;
    [data release];
    // encode the urlString with percent escapes
    NSString *urlStr = [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    NSURL *url = [[NSURL alloc] initWithString:urlStr];
    NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:30.0];
    NSURLConnection *conn = [[NSURLConnection alloc] initWithRequest:request delegate:self];
    self.urlConnection = conn;
    [conn release], [request release], [url release];
 }

また、NSURLConnectionDelegateクラスに を含め、デリゲート関数を実装して、NSURLConnection からフィードバックを取得します。

于 2012-09-11T11:46:50.433 に答える