数据缓存方案及目录结构

2016-11-01  本文已影响0人  进击的小矮人

方案:

1.网络数据优先:每次都是从网络获取数据,如果没有网络,从本地获取。
2.本地数据优先:每次都是从本地获取,如果本地不存在,从网络获取。
3.智能模式,先从本地获取数据,然后加载,同时继承从服务器获取数据,当从服务器获取数据后,然后刷新加载服务器数据。

1.如何判断有没有网络?

需要用到Reachability第三方库,可以从GitHub上下载。导入库后

Reachability *reachability = [Reachability reachabilityWithHostName:@"http://www.baidu.com"];
    //获取当前网络状态
    NetworkStatus status = reachability.currentReachabilityStatus;
    //没有网络
    if (status == NotReachable)
    {
        //从本地读取
        //刷新界面
        NSLog(@"从数据库中获取");
    }
    //有网络
    else
    {
        /**
         *  请求网络数据
         */
        NSLog(@"从网络获取");
    }

2.永久数据保存方式:

1.NSUserDefaults
2.归档(序列化)
3.文件保存
4.数据库(sqlite)
5.CoreData
6.KeyChain

3.app目录结构:

家目录下有三个文件夹,在xcode5之前,沙盒和里面有4个文件,多一个app。(家目录:即沙盒(SandBox),沙盒目的就是保护当前应用程序的数据,两个不同的app不能共用一个app的沙盒数据。)
3个文件:
     1.Documents:保存用户数据:用户产生的数据,比如下载图片,下载文件。改文件夹itunes备份里面的数据。
     2.Library:有2个子文件夹。分别是Caches和Preferences。一般缓存文件一般都保存到Caches文件夹下面。
     3.tmp:临时文件,当前程序终止的时候,该文件夹的数据会自动丢失。
     
     注意:家目录在真机上没有权限。
获取Documents路径
/*
     参数1:路径名字(ios能用到的:NSCachesDirectory,NSDocumentDirectory,NSLibraryDirectory)
     参数2:NSUserDomainMask(用户安装目录)
     参数3:YES表示完整路径
     */
    NSString *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0];
    NSLog(@"%@",path);
获取Cache目录
path  = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES)[0];
    NSLog(@"%@",path);
获取tmp路径
    NSTemporaryDirectory();
上一篇下一篇

猜你喜欢

热点阅读