了解SQLite的使用,我们知道SQLite是一个关系型数据库,需要使用SQL语言来进行操作,而SQLite需要通过C调用对应的API,并进行一些底层的封装操作,而且Model对象文件需要自己编写,代码量会非常多。
所以苹果在2005年第一次引入了Core Data框架,与SQLite相比,Core Data避免了SQL的复杂性,能让开发者更自然地与数据库进行交互。
Core Data简介
Core Data是伴随着iOS 5 出现的一个框架,它位于SQLite数据库之上,可以将模型对象保存到持久化存储中,并在需要的时候将他们取出。
由于Core Data位于MVC设计模式的Model层,他能将应用程序中的对象直接保存到数据库中,无需进行复杂查询,也无需确保对象的属性名和数据库字段名相对应,因此,与SQLite相比,使用Core Data为Model层编写的代码行数会减少为原来的50%至70%。
在Core Data框架中包含了几种类型的对象,这些对象的集合用术语叫做堆栈(Stock),下面是苹果官方描述Core Data框架堆栈的图片:
由图中可以看出,Core Data框架中的堆栈包含4个模块,他们分别的作用如下:
- Managed Object Model(托管对象模型):描述应用程序的数据模型,也就是数据库中数据表记录的对象表示,由Core Data管理的模型(Model)对象。
- Managed Object Context(托管对象上下文):参与数据库进行各种操作的全过程,并监测数据对象的变化,在上下文中可以查找,删除和插入对象。
- Persisent Store Coordinator(持久化存储协调器):相当于数据文件管理器,处理底层的对数据文件的读取和写入。通常情况下,它是数据库与对象之间的桥梁,专门用来添加持久化存储数据库(如SQLite数据库),一般开发者无需与它打交道。
- Persistent Object Store(持久化对象存储库):用来存储对象模型。从概念上讲,一个持久化存储(Persistent Store)就像一个数据库,有数据表和数据记录。
Core Data提供了对象-关系映射(ORM)的功能,即能够将OC对象转为数据,保存在SQLite数据库文件中, 也能够将保存在数据库中的数据还原成OC对象,比如下图所示:
由图中可以看出,关系模型(即数据库)中包含person表,person表中有id,name,age等3个字段,而且包含了两条记录;对象模型则包含的是2个OC对象,我们可以通过Core Data框架,轻松将数据库中的2条记录转换为2个OC对象,也可以轻松地将2个OC对象保存到数据库中,变成2条表记录。
需要注意的是,使用Core Data实现关系模型和对象模型的转换过程是不需要编写任何SQL语句的。
Core Data使用
没用过,书上看的,先记下来吧,感觉这东西挺烦的:
使用coreData的好处之一就是可以减少Model层代码的编写,但是要使用CoreData,首先需要学会创建模型实体,为了方便,我们可以在Xcode工具中创建模型实体: