NSURLConnection正在返回旧数据

时间:2012-01-01 19:34:46

标签: ios nsurlconnection

在我的应用程序中,我使用NSURLConnection方法加载JSON数据,如下所示:

NSURLRequest *request = [[NSURLRequest alloc] initWithURL:
                                [NSURL URLWithString:@"theurl"]];
NSURLConnection *theConnection = [[NSURLConnection alloc] initWithRequest:request
                                                                 delegate:self];
[theConnection start];

我在-didReceiveData:方法中接收并保存数据,但是如果我在服务器上更新我的JSON文件,NSURLConnection仍会向我提供旧的JSON,而文件正确上传到服务器。只有当我从iPhone(或iPhone模拟器)中删除整个应用程序并重建应用程序时,它才会收到新的Json文件。

有没有人知道这个问题的解决方案?

2 个答案:

答案 0 :(得分:9)

您需要告诉NSURLRequest重新评估(如果您的服务器发送了相应的已修改标头)或不使用它的缓存。以下是我的JBAsyncImageView项目的摘要(提示:使用NSURLRequestReloadRevalidatingCacheDataNSURLRequestReloadIgnoringLocalCacheData):

// Create request
self.imageRequest = [[NSURLRequest alloc] initWithURL:imageURL 
                                          cachePolicy:(self.cachesImage) ? NSURLRequestReturnCacheDataElseLoad : NSURLRequestReloadIgnoringLocalCacheData 
                                      timeoutInterval:self.downloadTimeoutInterval];

// Begin download
self.imageData = nil;
self.imageConnection = [[NSURLConnection alloc] initWithRequest:self.imageRequest 
                                                       delegate:self 
                                               startImmediately:YES];

答案 1 :(得分:5)

防止请求缓存的最简单方法是在最后添加一个带有当前时间的timestamp参数:

http://example.com/api.json?my=args&timestamp=2344992923