Core Data 的用法

          正如大家所想,直接使用SQLite API 来操作数据库虽然并不复杂,但由于这种操作方式并不是面向对象的因此与Objective-C的编程思维并不相同。为了解决这个问题,iOS提供了Core Data 框架,这个框架本质就是一个ORM框架,它允许开发者以面向对象的方式持久化操作SQLite 数据库。 

简单的说,Core Data 是一个纯粹的面向对象的框架,可用来管理实体以及实体之间的关联关系的持久化——所谓持久化,指的是Core Data 可以将实体保存到持久化存储设备中,也可以在需要的时候将它们取出。

        Core Data 底层的持久化存储方式可以是SQLite 数据库,也可以是XML文档, 甚至可以直接以内存作为持久化存储设备(当然,如果选择内存作为持久化存储设备,那么应用重启时,数据就会丢失)。

Core Data  的核心概念是实体。实体是由Core Data 管理(简称被托管)的模型对象,它必须是NSManagedObject 类或其子类的实例。实体与实体之间存在1-1、1-N、N-N的关联关系,整个应用的所有实体以及实体之间的关联关系被称为托管对象模型(NSManagedObjectModel).

Core Data 的核心对象是托管对象上下文(NSManagedObjectContext,有时也简称上下文),所有实体都处于托管对象上下文管理中,Core Data 应用对实体所做的任何CURD(增、删、改、查)操作都必须通过托管上下文来完成。

开发者开发的应用程序需要通过NSManagedObjectContex 对实体进行CURD操作,而NSManagedObjectContex 底层与持久化存储协调器(NSPersistentObjectCoordinator)衔接,持久化存储协调器则负责管理底层的存储形式(比如SQLite)。

       下图显示了Core Data 应用中各种对象之间的关系


Core Data 应用中的核心API有如下几个:

>>托管对象模型(NSManagedObjectModel):该对象负责管理整个应用的所有实体以及实体之间的关联关系。这个模型包含实体(Entity),特性(Property),读取请求(Fetch Request)等。

>>持久化存储协调器(NSPersistentObjectCoordinator):负责管理底层的存储文件,例如SQLite数据库等,一般我们不需要和它打交道。

>>托管对象上下文(NSManagedObjectContext):该对象是Core Data 的核心对象,应用程序对实体所做的CURD操作都需要通过该对象来完成。

>>实体描述(NSEntityDescription):该对象代表了关于某个实体的描述信息,从某种程度来说,该对象相当于实体的抽象。

>>抓取请求(NSFetchRequest):该对象封装了查询实体的请求,包括程序需要查询哪些实体、查询条件、排序规则等。

这些模块是怎样运行的呢?

1>  创建 NSManagedObjectModel 对象来加载管理应用的托管对象模型。

2>  以 NSManagedObjectModel 对象为基础,根据实际需要创建 NSPersistentObjectCoordinator 对象,该对象确定 Core Data 底层数据的存储形式。

 3>  以 NSManagedObjectModel 对象为基础,创建NSManagedObjectContex,该对象是 Core Data 进行持久化访问的核心对象。

4>   对于普通的增、删、改操作,需要分别先新建实体、删除实体、修改实体、然后调用NSManagedObjectContex 对象的save:方法,将这些修改保存到底层的存储设备。

5>   如果要执行查询操作,则需要先创建 NSFetchRequest 对象,再调用 NSManagedObjectContext 的 executeFetchRequest:error 方法执行查询,该方法返回所有匹配条件的实体组成的NSArray 。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值