初识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的博大精深并不止于此,后面再继续慢慢探究吧。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,290评论 4 363
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,399评论 1 294
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,021评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,034评论 0 207
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,412评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,651评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,902评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,605评论 0 199
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,339评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,586评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,076评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,400评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,060评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,083评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,851评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,685评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,595评论 2 270

推荐阅读更多精彩内容

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