数据缓存方案及目录结构

方案:

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();
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,452评论 19 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,579评论 25 709
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 14,221评论 4 61
  • java虚拟机在执行程序的过程中会把它管理的内存划分为若干个不同的数据区,包括 1. 程序计数器。线程私有的内存...
    迷夏湖阅读 1,137评论 0 0
  • 前期回顾: 小诺陪妈妈出去买东西,无缘无故跟人吵了起来,对比婆婆的知书达礼,小诺叹息自己的苦闷。 转眼小诺结婚已经...
    温血马阅读 2,817评论 0 0