iOS开发本地缓存

原创 2015年07月08日 19:19:14
为了节约流量,同时也是为了更好的用户体验,目前很多应用都使用本地缓存机制,其中以网易新闻的缓存功能最为出色。我自己的应用也想加入本地缓存的功能,于是我从网上查阅了相关的资料,发现总体上说有两种方法。一种是自己写缓存的处理,一种是采用ASIHTTPRequest中的ASIDownloadCache。

方法一:一般将服务器第一次返回的数据保存在沙盒里面。这样在手机断网的情况下可以从本地读取数据了。

1.保存到沙盒的代码:

 

[plain] view plaincopy
  1. + (void)saveCache:(int)type andID:(int)_id andString:(NSString *)str;  
  2. {  
  3.     NSUserDefaults * setting = [NSUserDefaults standardUserDefaults];  
  4.     NSString * key = [NSString stringWithFormat:@"detail-%d-%d",type, _id];  
  5.     [setting setObject:str forKey:key];  
  6.     [setting synchronize];  
  7. }  

2.读取本地沙盒的代码

 

读取之前首先根据type和Id判断本地是否有

 

[plain] view plaincopy
  1. + (NSString *)getCache:(int)type andID:(int)_id  
  2. {  
  3.     NSUserDefaults * settings = [NSUserDefaults standardUserDefaults];  
  4.     NSString *key = [NSString stringWithFormat:@"detail-%d-%d",type, _id];  
  5.       
  6.     NSString *value = [settings objectForKey:key];  
  7.     return value;  
  8. }  

如果沙盒里面有数据

 

[plain] view plaincopy
  1. NSString *value = [Tool getCache:5 andID:self.QiuTime];  
  2.         if (value) {  
  3.             NSDictionary *backdict = [value JSONValue];  
  4.             if ([backdict objectForKey:@"items"]) {  
  5.                 NSArray *array=[NSArray arrayWithArray:[backdict objectForKey:@"items"]];  
  6.                 for (NSDictionary *qiushi in array) {  
  7.                     QiuShi *qs=[[[QiuShi alloc]initWithDictionary:qiushi] autorelease];  
  8.                     [self.list addObject:qs];  
  9.                 }  
  10.             }  
  11.             [self.tableView reloadData];  
  12.              
  13.         }  
  14.           
  15.         [self.tableView tableViewDidFinishedLoadingWithMessage:@"数据全部加载完了.."];  
  16.         self.tableView.reachedTheEnd  = YES;  

 

iOS开发本地缓存(数据离线缓存、…

为了节约流量,同时也是为了更好的用户体验,目前很多应用都使用本地缓存机制,其中以网易新闻的缓存功能最为出色。我自己的应用也想加入本地缓存的功能,于是我从网上查阅了相关的资料,发现总体上说有两种方法。一...
  • super_ZJ_iOS
  • super_ZJ_iOS
  • 2017年05月13日 18:11
  • 143

iOS开发缓存:本地缓存

在手机应用程序开发中,为了减少与服务端的交互次数,加快用户的响应速度,一般都会在iOS设备中加一个缓存的机制,前面一篇文章介绍了iOS设备的内存缓存,这篇文章将设计一个本地缓存的机制。 功能需求...
  • Zero_World
  • Zero_World
  • 2014年05月19日 17:02
  • 603

iOS五种本地缓存数据方式

前言 iOS本地缓存数据方式有五种: 1.直接写文件方式:可以存储的对象有NSString、NSArray、NSDictionary、NSData、NSNumber,数据全部存放在一个属性列表文件...
  • czkyes
  • czkyes
  • 2016年05月19日 14:12
  • 12238

Reids分布式缓存+Ehcache本地缓存解决方案

Redis 本地缓存+远程缓存方案 使用纯java的ehcache作为本地缓存 Reids 作为远程分布式缓存 解决redis缓存压力过大,提高缓存速度,以及缓存性能。 Redis和ehcache缓存...
  • baiyunpeng42
  • baiyunpeng42
  • 2016年12月16日 16:09
  • 3483

HTML5 本地缓存

  • shine0181
  • shine0181
  • 2010年12月18日 22:12
  • 11721

Java 本地缓存的实现(转)

转自:http://zhangwei-david.iteye.com/blog/2179087  在java web 项目中对频繁读取且相对稳定的数据一般都是用了缓存,这样可以极大地减少数据...
  • lunhuishizhe
  • lunhuishizhe
  • 2015年01月28日 23:07
  • 2710

JS实现本地缓存实例

localStorage实现本地缓存 本地缓存 var strKey = "strKey"; var storage = window.localStorage...
  • zou_hailin226
  • zou_hailin226
  • 2012年09月04日 14:20
  • 2112

中央缓存结合本地缓存-本地缓存数据刷新方案

互联网应用通常都需要应付大并发量,为了提高QPS,通常会使用中央缓存(例如memcache)和本地缓存的方式。请求先经过本地缓存,如果不命中,则请求穿透到中央缓存,如果还是不命中,则会直接查询数据库,...
  • linsongbin1
  • linsongbin1
  • 2016年07月12日 09:19
  • 3736

分布式本地缓存的一种实现

分布式本地缓存的一种实现
  • tq02h2a
  • tq02h2a
  • 2017年08月11日 22:18
  • 663

android项目开发过程中的本地缓存总结

在现在很多的开发中,开发一个app缓存和网络存储搭配起来使用往往是必须的,自己写过比较多的项目所有谈谈感想。 缓存作用: 所谓的缓存机制就是数据获取方式的变化,app的缓存通常就是把用户经常需要从...
  • u013746688
  • u013746688
  • 2016年08月24日 20:49
  • 1934
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:iOS开发本地缓存
举报原因:
原因补充:

(最多只允许输入30个字)