ASIHttpRequest 本地缓存

这篇博客介绍了如何使用ASIHTTPRequest的ASIDownloadCache实现iOS应用的本地缓存。首先在AppDelegate中设置全局缓存对象,然后在请求时配置缓存策略,最后展示了如何手动清理缓存数据。
摘要由CSDN通过智能技术生成

于是我从网上查阅了相关的资料,发现总体上说有两种方法。一种是自己写缓存的处理,一种是采用ASIHTTPRequest中的ASIDownloadCache。根据自己目前的水平,我选择后者,具体的实现方法:

 1、设置全局的Cache
    在AppDelegate.h中添加一个全局变量

@interface AppDelegate : UIResponder <UIApplicationDelegate> 


    ASIDownloadCache *myCache; 

@property (strong, nonatomic) UIWindow *window; 
@property (nonatomic,retain) ASIDownloadCache *myCache; 

   在AppDelegate.m中的

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions方法中添加如下代码
//自定义缓存 
ASIDownloadCache *cache = [[ASIDownloadCache alloc] init]; 
self.myCache = cache; 
[cache release]; 
//设置缓存路径 
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentDirectory = [paths objectAtIndex:0]; 
[self.myCache setStoragePath:[documentDirectory stringByAppendingPathComponent:@"resource"]]; 
[self.myCache setDefaultCachePolicy:ASIOnlyLoadIfNotCachedCachePolicy]; 


在AppDelegate.m中的dealloc方法中添加如下语句

[myCache release]; 

    到这里为止,就完成了全局变量的声明。
    2、设置缓存策略

    在实现ASIHTTPRequest请求的地方设置request的存储方式,代码如下

[plain] 
NSString *str = @"http://....../getPictureNews.aspx"; 
NSURL *url = [NSURL URLWithString:str]; 
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url]; 
//获取全局变量 
AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate]; 
//设置缓存方式 
[request setDownloadCache:appDelegate.myCache]; 
//设置缓存数据存储策略,这里采取的是如果无更新或无法联网就读取缓存数据 
[request setCacheStoragePolicy:ASICachePermanentlyCacheStoragePolicy]; 
request.delegate = self; 
[request startAsynchronous]; 

    3、清理缓存数据
    我在这里采用的是手动清理数据的方式,在适当的地方添加如下代码,我将清理缓存放在了应用的设置模块:

[plain] 
AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate]; 
[appDelegate.myCache clearCachedResponsesForStoragePolicy:ASICachePermanentlyCacheStoragePolicy]; 

    这里清理的是ASICachePermanentlyCacheStoragePolicy这种存储策略的缓存数据,如果更换其他的参数的话,即可清理对应存储策略的缓存数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值