首页 > 代码库 > IOS中CoreData浅析
IOS中CoreData浅析
CoreData简介:
什么是CoreData?
Core Data是iOS5之后才出现的一个框架,它提供了对象-关系映射(ORM)的功能,即能够将OC对象转化成数据,保存在SQLite数据库文件中,也能够将保存在数据库中的数据还原成OC对象。在此数据操作期间,我们不需要编写任何SQL语句
CoreData 不能执行SQL语句 取而代之,操作的是对象。而常用的三方库 FMDB SQLite 可以直接SQL语句
CoreData和数据库有什么区别?
CoreData是一个苹果原生的框架,它拥有像数据库一样存储数据的功能,但本身并不是数据库
- Core Data 是iOS SDK 里的一个很强大的框架,允许程序员以面向对象的方式储存和管 理数据。使用Core Data 框架,程序员可以很轻松有效地通过面向对象的接口管理数据,所以说CoreData不是数据库,不要以数据库的眼光看待.
Core Data 不是应用程序的数据库,也不是将数据持久化保存到数据库的API。Core Data 是一个 用于管理对象图的框架。Core Data 可以把对象图写入磁盘从而持久化保存
CoreData有什么特点?
(1)CoreData提供了模型层的技术,可以直接对OC对象进行数据持久化
- Core Data 是一个模型层的技术。帮助建立代表程序状态的模型层,Core Data 也是一种 持久化技术,能将模型对象的状态持久化到磁盘,但它最重要的特点是:Core Data 不仅是 一个加载、保存数据的框架,它还能和内存中的数据很好的共事
(2)在数据的存储操作过程中,CoreData无需编写任何SQL语句
(3)Core Data 使用包括实体和实体间关系,以及查找符合某些条件实体的请求等内容
(4)开发者可以在纯对象层上查找与管理这些数据,而不必担心存储和查找的实现细节
(5)Core Data 框架最早出现在Mac OS X 10.4 Tiger 与iOS 3.0 系统,经过成千上万的应 用程序以及数以百万用户的反复的验证,Core Data 确实已经是一套非常成熟的框架
(6)CoreData 利用了Objective-C 语言和运行时,巧妙地集成了Core Foundation 框架。是 一个易于使用的框架,不仅可以优雅地管理对象图,而且在内存管理方面表现异常优异
CoreData原理:
第一眼看到Core Data 令人生畏的复杂架构关系,很多人都会有无从下手的感觉
可是,一旦理解了架构图中各个部件的组成及相互之间的关系,就能体会到Core Data API 的简 洁和直观了
Core Data stack(技术堆栈):如果能够理解Core Data stack 中的各个成员所扮演的角色,那么再 使用Core Data 就不会感觉到困难了
1.1-什么是CoreData Stack?
Core Data stack 是Core Data 的核心,由一组Core Data 核心对象组成
NSManagedObjectContext 对象管理上下文: 负责管理模型的对象的集合
NSManagedObjectModel 被管理的对象模型: 负责管理对象模型
NSPersistentStoreCoordinator 存储调度器: 负责将数据保存到磁盘的
1。2-CoreData Stack中的对象是如何协调工作的呢?
组成可分为两部分
对象图管理:主要是指对象管理上下文(NSManagedObjectContext)通过对对象模型(NSManagedObjectModel)实施对象管理.
数据持久化:主要是指存储器(NSPersistentStore)来操作SQLite数据库,将数据存储在磁盘中(这部分是系统帮我们完成不需要我们管).
- 在这两部分的中间,即堆栈中间,是持久化存储协调器(Persistent Store Coordinator, PSC)。通过它将对 象图管理部分和持久化部分绑在一起。当这两部分中的一部分需要和另一部分交互,将通过PSC 来 调节
- 其中的注意点:
一个工程可以有多个管理模型的Context,一个存储调度器可以调度多个存储器,不过在一般的开发中,我们只需要一个Contect和一个存储器就足够了
IOS中CoreData浅析