本来摘抄自: <<CoreData 应用开发实践指南>>, 希望下面的复述能够提高自己的理解.
*coreData:
CoreData是个框架, 它使的开发者可以把<b>数据库中的数据当成对象来操作</b>, 而不必在乎数据在磁盘中的存储方式.对于开发者来说通过代码管理对象应该是非常熟练的了.CoreData本身位于我们的应用程序和持久化存储区之间. 持久化存储区是通用术语,指的是像SQLite数据库,XML文件(iOS不支持用XML文件作为持久化存储区)或Binary store这种数据文件.由于这些文件在底层硬件重启之后还会保留下来, 所以他们是持久的.还有一种持久化方式,他的名字非常奇怪, 叫做"In-Memory store". ---但要注意的是 Binary和XML格式的存储区是"原子的",也就是说,即便你只想修改少量数据, 在保存的时候也依然需要把整个文件都写入磁盘.这样在数据很多的情况下, 存储过程就会占用宝贵的内存空间.
<ol>
<li>持久化协调器</li>
持久化协调器里面包含一个持久化存储区, 而存储区里面又含有数据表里的若干行数据.设置持久化存储协调器的时候, 我们通常选用SQLite数据库作为持久化存储区.
同一个持久化存储协调器可以有错个持久化存储区.把CoreData与ICloud相集成的时候就会出现这种情况.
<li>托管对象模型</li>
它位于持久化存储协调器和托管对象上下文之间. 顾名思义: 托管对象模型是描述数据结构的模型或视图.而托管对象正是以他为基础产生出来的.(NSManagedObjectMoel)也叫被管理的对象模型.
<li>托管对象上下文</li>
托管对象上下文负责管理其中对象的生命周期, 并且负责提供许多强大的功能, 比如: faulting, 变更追踪, 验证等. 所谓faulting,意思是用户从持久化存储区中获取数据时, 系统只会把需要的那一部分获取过来. 持久化存储区可以有多个, 同样上下文也可以有多个,.
<b>*托管对象上下文是放在高速内存里的, 这样在我们处理数据的时候会很大程度的提高存取速度, 不需要再从硬盘中读取数据. 所以我们在处理完上下文数据的时候 , 一定要记得做Save操作, 将数据更新保存到磁盘中.</b>