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,而文件正确-didReceiveData:传到服务器。 只有当我从我的iPhone(或iPhone模拟器)中删除整个应用程序并重建应用程序时,它才会收到新的Json文件。

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

您需要告诉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]; 

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

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