美文网首页
数据缓存方案及目录结构

数据缓存方案及目录结构

作者: 进击的小矮人 | 来源:发表于2016-11-01 16:34 被阅读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();
    

    相关文章

      网友评论

          本文标题:数据缓存方案及目录结构

          本文链接:https://www.haomeiwen.com/subject/vlryuttx.html