0

我正在开发一个 iPhone 应用程序,我在其中读取存储在 URL 中的公共汽车时刻表。时间表经常更改,所以我想每次都重新阅读,而不是从缓存中获取副本。这是我正在使用的代码:

   NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:timetable_URL]];
   NSData *response = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];

但是,这似乎读取了一个缓存副本,因此当服务器上的时间表发生更改时,应用程序需要一段时间才能将其拾取。谁能告诉我如何强制从服务器读取数据?感谢您对此的任何帮助。

4

3 回答 3

2

您可以在创建 NSURLRequest 时指定缓存策略

NSURLRequest *request = [[NSURLRequest alloc] initWithURL:[NSURL URLWithString:timetable_URL]
                          cachePolicy: NSURLRequestReloadIgnoringLocalCacheData
                        timeoutInterval:30.0];
NSData *response = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
于 2013-10-19T09:22:44.127 回答
1

使用cachePolicyNSURLRequest 上的属性指定NSURLRequestReloadIgnoringLocalCacheData

https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSURLRequest_Class/Reference/Reference.html#//apple_ref/occ/instm/NSURLRequest/cachePolicy

于 2013-10-19T09:22:55.083 回答
1

尝试类似:

NSURLRequest *urlRequest = [NSURLRequest requestWithURL:url
  cachePolicy:NSURLRequestReloadIgnoringCacheData
  timeoutInterval:timeInterval]
NSURLConnection *urlConnection = [NSURLConnection connectionWithRequest:urlRequest
   delegate:self];

并使用:

- (NSCachedURLResponse *)connection:(NSURLConnection *)connection willCacheResponse:(NSCachedURLResponse *)cachedResponse
{
   return nil;
}
于 2013-10-19T09:25:18.403 回答