CoreData

iOS5 后才有的技术,CoreData能够将Objective-C对象转化成数据保存在SQLite数据库文件中,也能够将保存的数据以Objective-C对象形式读取出来,是对sqlite的封装,增删改查功能都有相应的方法。

使用CoreData可以存取数据量比较大的数据。对于实现缓存、做本地应用,coredata技术是一个很好的选择。下面介绍怎么使用coredata:

一 、搭建环境

在项目中使用coredata以下两种情况处理方式:

1.在新建的项目中,一般是新建的时候勾选 Use Core Data,然后在新建的项目中在UIAppDelegate文件就会多出一些代码,为了方便我们一般是将这些代码抽取出来形成一个CoredataManager的类,然后用单例的方式运作增删改查。



2.如果要在没有勾选coredata的项目中使用coredata,则需要做一下几个步骤:

①在应用的里面找到导入

 

然后再将勾选了coredata的项目里的那种代码copy到CoreDataManager类中。


②新建一个xcdatamodeld文件:



二、具体使用

1. coredata可以根据你项目中的xcdatamodeld文件自动生成模型类,所以请不要自己建立类了。

2. 接下来你需要根据数据的需要来建立一个个的实体(entity,一个实体就相当于sqlite中的一个表),如图:

3. 如果你有很多个实体,可以将有联系实体放在一个xcdatamodeld文件,新建其它的xcdatamodeld文件来放其它有关联的实体。实体取名要和你想要创建的模型类一致。

4. 上图中的Attributes(实体属性,相当于类的属性,数据库表的一个条目)和Relationship(自身实体和xcdatamodeld文件里其它实体的关系)一般是要填的,单个实体的话就不用填Relationship了。Fetched properties这里可以选择实体属性读取的谓词,这里一般不用填。属性的数据类型自己选择,Relationship和Attributes的细节详见本文的“四、使用注意”。


5. 设置好了实体之后接下来就是生成类了,选中一个实体然后看图:

点击了Create NSManagedObject SubClass...后,自行勾选(可以全选)哪个xcdatamodeld文件,自行勾选(可以全选)哪些实体要创建,若之前已经这样创建过类了,则会出现警示如下图,这时直接点击替换即可,在一开始全选了实体后生成的类中会有下图的NSManagedObject那样的情况,这时也是要再次生成一次,直到NSManagedObject变成了另一个实体名。

        


三、代码

1. 代码参考:http://download.youkuaiyun.com/detail/iabelcaiarray/8949075

2. 调试:

若要知道coredata执行增删改查操作具体使用的sqlite语句可以在


四、使用注意

1. Attribute相关:

① 若要自行创建和保存一个属性,选取Attribute Type为 undefined


这个属性通常是要覆盖- (void)awakeFromFetch

{

         [super awakeFromFetch];

// 此处写自主管理这个属性代码

}

2. Relationship相关:


如图:

①1中填写当前实体以什么名称拥有目标实体;

②2中选择目标实体;

③3中的意思是图中2号框的实体拥有的当前实体类名,在先设置好5号框后再来填这个框;

④4中是选择级联关系,可以自己查看单词的意思进行选择,需要注意的是这里Delete Rule指的是本实体删除对目标实体的影响;

⑤5中是选择本实体对目标实体的关系,简单来说就是本实体可以拥有多少目标实体。


3. 对数据的增删改查相关:

这些操作一般封装在CoredataManager类中了,方法是根据需求来自定义的,详细的做法这里形容起来会篇幅很长,如果需要的话可以下载我的demo,希望能帮助到和我当初一样苦恼的你。


4. CoreDataManager相关:

xcdatamodeld文件自己建立,借用不了其它项目的,所以不要想着拷贝文件了

② 新建xcdatamodeld文件后请修改如下:

 


五、使用好coredata还需学习NSPredicate(谓词)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值