ios开发本地缓存,ios开发本地缓存怎么开

iOS开发中为什么要使用缓存

如果实现接口数据没有变化使用缓存的功能?

创新互联主要从事成都网站设计、网站制作、网页设计、企业做网站、公司建网站等业务。立足成都服务城西,十余年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:028-86922220

拿到本地数据摘要传给后台,后台判断数据是否发生了变化,如果没有变化就不给返回这个接口的大量数据,如果发生了变化就返回这个接口的大量数据。

ios 开发 如何实现照片本地永久缓存

缓存怎么清理

方法/步骤

我们在用电脑很久时,电脑就会留下一些用过的痕迹,这个就叫做缓存,缓存有很多种比如来自网页和windows等

其实清理缓存有或多种,可以利用电脑自带的工具清理还可以使用应用软件来清理,下面就来介绍几个办法

方法一:首先选择你要清理的磁盘。如C盘首先选择c盘的属性,然后选择磁盘清理

或者利用浏览器的自带功能来清理,工具然后是删除,这一方法主要是清除浏览器中的缓存

最后就是利用软件啦,可以使用魔方等,点击清理就可以啦~

iOS开发 - Swift实现清除缓存功能

本文介绍在iOS开发中,Swift实现清除缓存功能。主要分为统计缓存文件大小和删除缓存文件两个步骤:

IOS中的缓存

NSCache是苹果系统提供的一个缓存框架,用法和NSMutableDictionary 相似。都是通过setValue: forKey: 设置值、和objectForKey 取值,

但还是有区别:

设置代理

需要类遵守协议NSCacheDelegate

把数据写入NSCache缓存

读取内存缓存NSCache

删除 NSCache数据

代理方法

即将回收清理cache的时候调用改方法

1.获取根目录

let homePath = NSHomeDirectory()

2.获取其他目录

获取沙盒目录路径可以通过 NSSearchPathForDirectoriesInDomains 方法,该方法有三个数:

iOS 加载网页, 加载本地html,  并缓存处理

笔者性懒,腹中无墨

app嵌html屡见不鲜, 本文描述加载简单的html网页。

首先说明需求: 有网的状态直接从获取html网页并且缓存, 无网状态先从缓存读取html, 若不成功则加载本地html文件, 并且将本地html文件写入缓存, 以便下次读取.

1.加载html网页, viewWillAppear或者viewDidLoad.

以下QAUrl均为html完整的url

2.若成功, 就在成功的代理方法里, 将网页端html写入缓存

3.不成功,在失败的代理方法里, 加载磁盘缓存或者本地html,其中isNetConnected是指是否连接到互联网, 默认是true,加载失败后置为false.

fileprivate var isNetConnected: Bool = true // 是否连接到互联网

4.同样,此次成功后,在代理方法里,将本地html文件写入缓存

5.代理方法的里很简洁

6.需要注意的是

(1)拼接缓存地址时, 如果html的URL类似于" ",不能作为地址拼接,否则无法缓存.

(2)笔者将拼接地址统一写成"/Caches/feedback.html",若有新的缓存,则地址被覆盖,不会导致缓存多个相同文件,一般无需清理或者导致内存警告

(3)本文不涉及缓存图片, js交互等问题

7.补充:

开发过程中,笔者又遇到了一个问题,有网的情况下,网页也可能出现加载不成功.这个时候如果只是加载网页就会什么都没有.所以在viewWillAppear或者viewDidLoad里应该有个判断

如果请求request返回的finish是true即成功,则加载html网页,不成功则加载缓存.

ios开发数据缓存如何获取服务端最新数据

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

1.保存到沙盒的代码:

[plain] view

plaincopy

+ (void)saveCache:(int)type andID:(int)_id andString:(NSString *)str;

{

NSUserDefaults * setting = [NSUserDefaults standardUserDefaults];

NSString * key = [NSString stringWithFormat:@"detail-%d-%d",type, _id];

[setting setObject:str forKey:key];

[setting synchronize];

}

2.读取本地沙盒的代码

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

[plain] view

plaincopy

+ (NSString *)getCache:(int)type andID:(int)_id

{

NSUserDefaults * settings = [NSUserDefaults standardUserDefaults];

NSString *key = [NSString stringWithFormat:@"detail-%d-%d",type, _id];

NSString *value = [settings objectForKey:key];

return value;

}

如果沙盒里面有数据

[plain] view

plaincopy

NSString *value = [Tool getCache:5 andID:self.QiuTime];

if (value) {

NSDictionary *backdict = [value JSONValue];

if ([backdict objectForKey:@"items"]) {

NSArray *array=[NSArray arrayWithArray:[backdict objectForKey:@"items"]];

for (NSDictionary *qiushi in array) {

QiuShi *qs=[[[QiuShi alloc]initWithDictionary:qiushi] autorelease];

[self.list addObject:qs];

}

}

[self.tableView reloadData];

}

[self.tableView tableViewDidFinishedLoadingWithMessage:@"数据全部加载完了.."];

self.tableView.reachedTheEnd = YES;

方法二:使用ASIHTTPRequest和ASIDownloadCache实现本地缓存

1、设置全局的Cache

在AppDelegate.h中添加一个全局变量

[plain] view plaincopy

@interface AppDelegate : UIResponder

{

ASIDownloadCache *myCache;

}

@property (strong, nonatomic) UIWindow *window;

@property (nonatomic,retain) ASIDownloadCache *myCache;

在AppDelegate.m中的- (BOOL)application:(UIApplication *)application

didFinishLaunchingWithOptions:(NSDictionary *)launchOptions方法中添加如下代码

[plain] view plaincopy

//自定义缓存

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方法中添加如下语句

[plain] view plaincopy

[myCache release];

到这里为止,就完成了全局变量的声明。

2、设置缓存策略

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

[plain] view plaincopy

NSString *str = @"";

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] view plaincopy

AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];

[appDelegate.myCache clearCachedResponsesForStoragePolicy:ASICachePermanentlyCacheStoragePolicy];

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


本文标题:ios开发本地缓存,ios开发本地缓存怎么开
网页地址:http://cdiso.cn/article/dsdiooo.html

其他资讯