CoreData介绍及使用
1. CoreData数据库简介:
CoreData 是mac平台和ios平台都有的数据库操作框架(本事不是数据库),一种类似关系数据库的东西,ios平台的coredata的数据库可以配置为sqlite,xml数据库等。
CoreData提供图形界面创建model,并且可以直接生成object-c类
CoreData使用NSPredlicate来代替sql语句查询数据库,直接更改数据模型属性保存就可以形成updata操作,删除数据模型就可以删除对应的一行数据,类似与hibernate,完全放弃sql语句,但更加容易学习。
推荐两篇博客:
[Cocoa]深入浅出 Cocoa 之 Core Data(1)- 框架详解
http://blog.csdn.net/kesalin/article/details/6739319
[Cocoa]深入浅出 Cocoa 之 Core Data(2)- 手动编写代码
http://blog.csdn.net/kesalin/article/details/6746117
2. 创建数据模型
在Xcode中可以使用图形界面来创建数据模型,数据模型可以有字符串,日期,数字,data,bool等属性。
数据模型之间可以创建关联,一对一,一对多,多对多三种关联类型,其中反向关联是CoreData的bug,使用反向关联会导致错误。
一对多的关联可以指定无序或者有序,有序在ios5.0以后才支持。
3. CoreData Demo演示
横扫能够删除改组员。群组列表,在列表显示群组名称,群组头像,组员数量。使用名称搜索群组,使用组员姓名搜索群组。动态监测群组新增,监测组员数量变化。
组员列表,显示组员名称,组员头像,群组数量。点击组员能够把组员加入其他群组。点击群组数量按钮,能够查看所属群组,能够把该组员从群组中删除。
4. CoreData 查询
CoreData使用NSPredicate查询,语法与查询NSArray,NSSet等完全一致,所以较容易掌握。
CoreData最强大的地方在于可以使用NSPredicate来监测满足一条件的数据的变化,即NSFetchResultsController,当满足NSPredicate的数据发生变化的时候,会触发delegate方法,这点非常有用,使用其他传统数据实现这一点非常麻烦,需要编写触发器(专门的语言,oracle中使用plsql编写触发器)。
5. 新增数据
更改数据不需要使用NSPredicate,需要指定新增的数据模型的类名,使用NSEntityDescription的方法然后保存就可以新增数据成功,不需要考虑主键冲突等问题。
如果使用NSFetchResultsController来监测某个数据,当新增满足这个条件的数据时,会触发NSFetchResultsController的delegate方法。
6. 更改数据
更改数据不需要使用NSPredicate,只要把数据模型的属性更改,然后保存就会更改成功。
如果使用NSFetchResultsController来监测某个数据,当这个数据被更改时,会触发NSFetchResultsController的delegate方法。
7. 删除数据
更改数据不需要使用NSPredicate, 删除数据使用NSManagedContext中的删除方法就可以完成删除,然后保存就可以删除成功。
如果使用NSFetchResultsController来监测某个数据,当这个数据被删除时,会触发NSFetchResultsController的delegate方法。