the study of Core Data

以前都用SQlite3或者是plist来存储用户数据,然而最近公司买的代码中用到了Core Data,于是开始研究。

功过学习,总结在工程项目中使用Core Data的基本步骤。

1. 必须在创建工程的时候,把Use Core Data勾选上;

2. 利用Xcode自带创建数据模型的功能,创建你需要的model;

3. 初始化Core Data stack;

4. 向Core Data里面添加保存、读取数据。

接下来分布讲解每一步骤。

选择在项目中使用Core Data

当你利用Xcode创建工程时,你会看到如下界面

这是在创建新工程的过程中,会弹出的供用户设置项目的页面,这个时候你就必须把Use Core Data勾选上,告诉Xcode你要在项目中使用Core Data。
如下图:


利用Xcode创建数据模型

假设我们需要存储的数据是一行字符串,并且带有行号。比如说(1, "hello")、(2,"hi”)。然后在项目中选中projectName.xcdatamodeld这个文件,
这个文件是由于你在创建项目时选择了Use Core Data后,Xcode自动帮你创建的。我这里项目名称设置成了CoreDataStudy, 所以我的这个文件名称时这样子的。
如下图:

点击Add Entity添加Line数据模型,你可以通过点击Editor Style在table和list视图之间切换。
根据下图的指示,创建Line Entity。

1. 选中你通过点击Add Entity按钮添加的Entity,然后按Enter键,改Entity的名称为Line。
2. 点击箭头所指的加号,为Line添加属性。
3. 给该Entity要添加如图所示的两个属性。

初始化Core Data stack

在Core Data stack初始化的过程中,会接触到NSManagedObjectModel、NSPersistentStoreCoordinator、NSManagedObjectContext这几个对象。结下来分别简单介绍一下
它们的作用。当你在创建工程的时候选择了Use Core Data后,Xcode会为你做好Core Data stack的初始化,不用你自己手动编写任何代码。

1. NSManagedObjectModel

是将第二步中创建的Entity与代码联系起来的对象。通过这个对象,代码才能感知到数据model对象是如何的一种存在(包括那些属性等);

2. NSPersistentStoreCoordinator

从类等名称就可以大体分析出来它的作用,它只是一个存储协助者,所以在这个类的创建过程中要给它传入数据模型(就是上面创建的NSManagedObjectModel、最终数据保存的路径、还有使用何种方式存储(有sqlite、xml、binary三种方式,这里我们使用sqlite)。

3. NSManagedObjectContext

是数据操作的上下文,通过这个类可以读取和写入数据。该类的创建过程中需要把上面创建的NSPersistentStoreCoordinator作为参数传入。
这些初始化代码都是Xcode自动给你生成好了,不用自己手动去编写。注意:iOS10 and MacOS 10.12这些初始化就变成一个NSPersistentContainer的初始化,不用涉及这么多多对象的创建,同时利用NSPersistentContainer管理NSManagedObjectModel、NSPersistentStoreCoordinator、NSManagedObjectContext这三个对象,很方便。但是我们这里还是采用比较繁琐的创建三个对象的Core Data stack的初始化。
做Core Data stack的初始化的目的只有一个,就是得到NSManagedObjectContext得到了这个对象,就可以对数据库进行读写操作了。

向Core Data里添加保存、读取数据

读数据:在core data的context里,通过NSFetchRequest来读取数据。
写数据:在core data的context里,通过NSFetchRequest来读取数据,如果没有相应地数据对象,就创建一个,然后将赋值后的对象保存到context里。
注:在NSFetchRequest里可以添加NSPredicate来添加查询约束。

相关Demo下载地址

如果遇到不懂的了,欢迎留言提问~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值