美文网首页
iOS 关于本地数据持久化的一些思路

iOS 关于本地数据持久化的一些思路

作者: 炳良哥哥 | 来源:发表于2016-07-27 10:07 被阅读0次

    狂干了一个月的项目,今天终于可以静下心来好好写一篇文章了。最近接触到的项目是关于本地和云端交互的科研型项目,着重的技术点就是本地化存储。

     那么直接进入正题吧,聊聊我对这块东西的理解,首先你得确定你要用的本地数据库,当然,我推荐两种realm和苹果自带的coredata,因为realm我挂了vpn下了一天都没有下好,所只能果断抛弃奔向coredata,之前看了好多教程,准备尝尝鲜,奈何网速不尽人意呐。用coredata其实用着用着也很简单,去下一个magicrecord,他对coredata的封装特别好,对于基本的查插删改的操作,都是很ok的,那么接下来上点代码和截图吧,聊一下表与表之间怎么搞联系,怎么去跟本地数据搞基。

    数据列表

    关于magicalrecord的操作手法,大家简书上搜索一下就可以了,反正我自己也是这么搜的,但是实际操作的时候有一点要提醒一下大家,[[NSManagedObjectContextMR_defaultContext]MR_saveToPersistentStoreAndWait];这句代码一定要在你们操作完数据库的时候写一下,我换了别的语句好像并没有什么作用,如图上面是三张表,我不高兴去建立什么relationsh或者pointer,所以每一个表中都用id来去标识她,这样你们取数的时候根据id来拿,或者命名的时候,也可以根据id来扩展。因为本地存储不光光是字段的数据,还有一个大头就是图片的存储。

      那么这里我选择的是egocache的缓存框架,具体用法大家自行搜索一下就可以了,类似苹果自带的nsuerdefault的用法,字典那样的,然后你清楚数据的时候,一行代码就可以搞定了。对object命名的时候也可以根据每一个唯一的id标识来进行扩展命名,方便你对数据库的操作。

    最关键的东西就是,如何疏通本地-服务器双向交互服务,我这里提一下我这儿的思路,用户每次点击保存的时候,先判断网络状态,无网当然是直接本地保存,有网的话,是先本地保存备份,然后服务器那儿去传,用异步去做,不然数据量大的话,会卡死。本地保存的逻辑我有这么一个思路,能先删除再保存的千万不要去直接更新,因为之前提到过那个串联所有本地数据的id标识,可以根据那个id先删再保存,跟服务器交互的时候,记得要用多线程技术,因为涉及到的接口不止一个,小数据的接口先来,然后大数据的跟上,做一个加载动画就可以了。感觉讲的还是不够到位,因为项目不能拿出来一点点剖析,感兴趣的同学,可以加我私聊。

    相关文章

      网友评论

          本文标题:iOS 关于本地数据持久化的一些思路

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