使用ASIDownloadCache脱机

时间:2011-10-25 23:36:04

标签: iphone objective-c ios5 asihttprequest

我想获得一个JSON并在Internet可用时缓存它,或者如果不是则使用缓存。我使用了这段代码,但是当我离线时,request的responseString总是为null。 (文档说它只有在服务器返回200或300响应时才有效。

ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
[request setDownloadCache:[ASIDownloadCache sharedCache]];

在没有网络连接的情况下获取缓存数据的想法吗?

谢谢。

2 个答案:

答案 0 :(得分:2)

您可以使用:

[[ASIDownloadCache sharedCache] pathToCachedResponseDataForURL:]

获取磁盘上缓存的路径。如果没有缓存数据,则会返回nil

答案 1 :(得分:2)

您需要确保永久明确缓存请求(跨应用程序会话)。设置此:

[request setCacheStoragePolicy:ASICachePermanentlyCacheStoragePolicy];

请求缓存后,只要下载缓存的策略在远程连接失败时回退到缓存,它就会立即返回缓存的数据。 [ASIDownloadCache sharedCache]应该已经设置为默认缓存策略,它可以很好地处理这种情况。