In my application, I am loading JSON data using the NSURLConnection method, what looks like this:
NSURLRequest *request = [[NSURLRequest alloc] initWithURL:
[NSURL URLWithString:@"theurl"]];
NSURLConnection *theConnection = [[NSURLConnection alloc] initWithRequest:request
delegate:self];
[theConnection start];
I receive and save the data in the -didReceiveData: method, but if I update my JSON file on my server, the NSURLConnection still delivers me the old JSON, while the file is uploaded correctly to the server. Only if I delete the whole app from my iPhone (or iPhone Simulator) and rebuild the application, it receives the new Json file.
Does anyone know a solution for this problem?
You'll need to tell the NSURLRequest to re-evaluate (if your server sends the appropriate modified headers) or not use it's cache. Here's a snippet from my JBAsyncImageView project (hint: Use NSURLRequestReloadRevalidatingCacheData or NSURLRequestReloadIgnoringLocalCacheData):
// 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];
The easiest solution to prevent request caching is to add a timestamp parameter with current time at the end:
http://example.com/api.json?my=args×tamp=2344992923
来源:https://stackoverflow.com/questions/8695023/nsurlconnection-is-returning-old-data