在我的应用程序中,我使用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文件。
有没有人知道这个问题的解决方案?
答案 0 :(得分:9)
您需要告诉NSURLRequest重新评估(如果您的服务器发送了相应的已修改标头)或不使用它的缓存。以下是我的JBAsyncImageView项目的摘要(提示:使用NSURLRequestReloadRevalidatingCacheData
或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];
答案 1 :(得分:5)
防止请求缓存的最简单方法是在最后添加一个带有当前时间的timestamp参数:
http://example.com/api.json?my=args×tamp=2344992923