CoreData是iOS5后,苹果提供的原生的用于对象化管理数据并且持久化的框架(ORM)。
CoreData本质上是将底层数据库封装成对象进行管理。但数据库实际上只是CoreData的一个功能,并不是全部功能。
在iOS开发中,除了可以使用CoreData进行数据管理,还可以使用SQLite进行内存管理。
并且有封装好SQLite代码的OC框架FMDB给我们使用。具体看我上篇文章。SQLite重要框架FMDB的使用.但对比SQLite,CoreData有下面几个优势。
第一是CoreData作为苹果提供的原生框架,在内存方法比SQLite有性能上的优势。
第二是CoreData操作数据不需要使用SQLite代码,使用方便。
第三是CoreData把数据用面向对象方式进行管理,操作数据库更方便。
CoreData的核心是Core Data stack(技术栈堆)。CoreData就是依靠Core Data stack中的几个对象进行数据操作的。
这几对象是:
NSManagedObjectContext ,管理对象的上下文: 负责管理模型对象的一个集合,
NSManagedObjectModel 被管理的对象模型
NSPersistentStoreCoordinator 存储调度器: 负责将数据保存到磁盘,
NSPersistentStore用于保存模型数据,受NSPersistentStoreCoordinator 存储调度器的操控。
这三个对象的关系如下面图片所示,苹果官方给出了这几个对向关系的图解。简单理解起来就是最上面的NSManagedObjectContext负责管理对象模型。然后将管理的对象模型发送给NSPersistentStoreCoordinator 存储调度器,存储调度器通过NSPersistentStore操作SQLite语句,将数据持久化到本地,保存到StoryFile中。