Ios NSURLConnection正在返回旧数据

Ios NSURLConnection正在返回旧数据,ios,nsurlconnection,Ios,Nsurlconnection,在我的应用程序中,我使用NSURLConnection方法加载JSON数据,如下所示: NSURLRequest *request = [[NSURLRequest alloc] initWithURL: [NSURL URLWithString:@"theurl"]]; NSURLConnection *theConnection = [[NSURLConnection alloc] initWithRequest:request

在我的应用程序中,我使用
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文件

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

您需要告诉服务器重新评估(如果您的服务器发送了适当的修改头),或者不使用它的缓存。以下是我的项目中的一个片段(提示:使用
NSURLRequestReloadRevalidatingCacheData
nsurlRequestReloadIgningLocalCacheData
):


防止请求缓存的最简单解决方案是在末尾添加一个带有当前时间的timestamp参数:

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

听起来好像结果正在缓存,请参见,谢谢!你和杰西的回答对我有用!非常感谢你的回答!为我工作!当iOS 7推出时,我遇到了这个问题。上面的解决方案并没有解决我的问题。在尝试了几件不同的事情之后,我不得不使用下面的解决方案(向请求添加时间戳)。文档中说“NSURLRequestReloadIgnoringLocalCacheData”没有实现?实际上,告诉
NSURLRequest
重新评估或不缓存数据可能比破解HTTP请求更容易。对于AJAX请求,这将是最简单的方法。不过,在iOS上并没有这么多。@JesseBunch Timestamp方法在服务器端或代理缓存配置不正确的情况下有优势。是的,但如果你告诉它不要使用缓存,你就不必担心了。值得一提的是,我并没有投你反对票。@JesseBunch若服务器或代理缓存了那个响应呢?您将发送忽略本地缓存的请求,但仍将收到缓存响应。我不是说我的技术比你的好(我更喜欢你的,它比我的更清晰),但在一些罕见的情况下,黑客的方式可能有用。你是对的。在这种情况下,您的解决方案可能是唯一的方法。
http://example.com/api.json?my=args&timestamp=2344992923