初识Core Data

最近公司项目用到Core Data,觉得自己这方面很弱,就结合了《Core Data应用实践指南》这本书,记下一下Core Data入门的一些基本知识。

1.Core Data基本概念

Core Data概览

图中托管对象-managed object是由Core Data提供的数据对象,而Core Data本身则位于app和持久化存储区-persistent store之间,一般我们使用SQLite数据库作为persistent store,当然还有XML文件也可以,但是iOS中并不支持这种格式。

要想将managed object映射到persistent store,还需要使用托管对象模型-managed object model,作为开发者,我们需要完善对象图-object graph,这个东西很熟悉,就是Xcode中生成的那一张表格类似的东西,书中称其为饼干模型切割刀,十分形象,managed object就是这么切出来的。

还有一个托管对象上下文-managed object context,所有的managed object都必须位于context中,关于context的设计也十分的有意思,位于RAM中,原因就是磁盘的读写速度比RAM慢了很多,这样的话如果每次访问数据,就会有很大的开销,现在只需要访问context,就能很快速的得到数据,很方便。而缺点则是,一旦有了数据的更改,就必须调用context的save方法,讲变更的数据写回磁盘,不过两相比较,瑕不掩瑜吧。

同时还有一点关于managed object context,由于调用save保存数据时候,容易造成界面卡顿,这种情况下可以采用多个context,这个时候书中提出了两个解决的方法,一个是当用户按下home键时候,程序进入后台的时候进行save调用,另一种方法是采用两个context,配置其父子关系,子上下文将父上下文当作自己的persistent store,将数据存入到父context中,这时父context将异步的存入磁盘,这个方法有些复杂,并未使用过,如果数据量小的话直接使用第一种就好。

persistent store coordinator中含有一份persistent store,顾名思义它就是协调数据存储到持久化存储区中的一个类。同一个persistent store coordinator可以协调多个persistent store,举个例子吧,Core Data与iCloud相集成的时候,就会出现这种情况,把属于iCloud和不属于iCloud的数据分别放到两个存储区里,使用两个persistent store,却采用同一个object graph。

但是我觉得书中配图并不是很直观,在http://objccn.io/issue-4-1/ 中作者用了另一张图,是官方文档中的


这张图中并没有managed object model,我觉得只有在最开始初始化的时候会用到managed object model来生成managed object,但是在程序运行中我们接触更多的还是数据的改变与存储,对应的则是上图,所以也贴上来吧

这是关于Core Data的一些基本的概念,可能比较粗糙,后面还会写一写代码类的,我觉得Core Data的基本使用还是很简单的,初始化这些类以后,写好增删改查的方法既能够应对最基本的需求了,但是Core Data的博大精深并不止于此,后面再继续慢慢探究吧。

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

推荐阅读更多精彩内容

  • 虽然从接触iOS开发开始,做的每一个项目都在用Core Data,但是一些比较底层的东西都是boss写的或者用的是...
    卖萌凉阅读 2,849评论 1 11
  • 本文是对 MagicalRecord github上的翻译 正文:注意: MagicalRecord 在 ARC...
    騂跃神话阅读 2,082评论 1 5
  • 转载自Core Data概述 Core Data 可能是 OS X 和 iOS 里面最容易被误解的框架之一,为了帮...
    夏天的风_song阅读 932评论 0 4
  • 卷首语 欢迎来到 objc.io 第四期! 本期我们将深入地研究苹果提供的模型层框架,Core Data。 Cor...
    评评分分阅读 933评论 0 9
  • 断断续续才读完的一本书,当初参与读书会大家在推荐读书书目时就让我印象很深的一本书名。因为我真心觉得养娃真是一个挑战...
    向阳生长的花儿阅读 175评论 1 1