NSURLConnection does not refresh



我有一个NSURLConnection,每次调用-(void)viewWillAppear:animated时我都会调用它(这只是暂时的,只是为了测试)

我是这样做的

receivedData = [[NSMutableData data] retain];
NSString *urlString = @"<URL hidden>";
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:urlString] cachePolicy:NSURLRequestReturnCacheDataElseLoad timeoutInterval:30.0];
[NSURLConnection connectionWithRequest:request delegate:self];

然后我有以下三种委托方法:

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
    [receivedData appendData:data];
}
- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
    NSString *returnString = [[NSString alloc] initWithData:receivedData encoding:NSUTF8StringEncoding];
    usersPhotos = [[NSMutableArray alloc] initWithArray:[[returnString JSONValue] objectForKey:@"data"]];
    [self loadAnnotations];
    NSLog(@"%@", returnString);
    [returnString release];
}
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error {
    [self loadAnnotations];
}

尽管我确信returnString应该更改(我可以访问urlString中的网站并确认它已经更改),但它始终是一样的。

就好像它重用了从第一个连接中检索到的数据。

有人知道为什么会这样吗?

这应该是您的缓存策略,我会在一秒钟内用正确的信息更新。


更新

尝试将您的cahce策略设置为:cachePolicy:NSURLRequestReloadIgnoringCacheData

应该是:

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

如果正在使用缓冲区,则需要清空缓冲区。

添加此方法:

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{   
    [receivedData setLength:0];
}

最新更新