数据库-Core Data
讲师:刘凡
技术博客:http://www.cnblogs.com/liufan9
新浪微博:http://weibo.com/liufan2012
iOS应用数据存取的常用方式
XML属性列表 —— PList
NSKeyedArchiver 归档
Preference(偏好设置)
SQLite3
Core Data
Core Data简介
Core Data 是iOS SDK 里的一个很强大的框架,允许程序员以面向对象的方式储存和管理数据。使用Core Data框架,程序员可以很轻松有效地通过面向对象的接口管理数据
Core Data框架提供了对象-关系映射(ORM)的功能,即能够将OC对象转化成数据,保存在SQLite3数据库文件中,也能够将保存在数据库中的数据还原成OC对象
在数据操作过程中,无需编写任何SQL语句
要使用Core Data,需要导入CoreData框架
模型文件及实体(Entity)
要使用Code Data,首先需要定义模型文件,描述应用程序中的所有实体(Entity)
所谓实体,是跟数据库进行映射的对象
NSManagedObject——对应数据库中的一条记录
Core Data主要对象关系示意图
Core Data主要对象
NSManagedObjectContext:负责应用和数据库之间的交互(CRUD)
NSPersistentStoreCoordinator:添加持久化存储库(如SQLite数据库),是物理数据存储的物理文件和程序之间的联系的桥梁,负责管理不同对象上下文
NSManagedObjectModel:被管理的对象模型,对应定义的模型文件
NSEntityDescription:实体描述
打开数据库
// 1. 实例化持久化的存储
// 1.1 从Bundle中加载被管理的数据模型
NSManagedObjectModel *model = [NSManagedObjectModel mergedModelFromBundles:nil];
// 1.2 实例化持久化存储调度
NSPersistentStoreCoordinator *store = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:model];
...
// 1.3 添加持久化存储(SQLite)
[store addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:url options:nil error:&error];
...
// 管理对象上下文
_context = [[NSManagedObjectContext alloc] init];
_context.persistentStoreCoordinator = store;
新增记录
新增记录
Person *p = [NSEntityDescription insertNewObjectForEntityForName:@"Person" inManagedObjectContext:_context];
p.name = @"张三";
p.age = @18;
[_context save:nil];
查询数据
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Person"];
request.predicate = [NSPredicate predicateWithFormat:@"%K LIKE '*52*' OR name CONTAINS '三'", @"phoneNo"];
NSArray *array = [_context executeFetchRequest:request error:nil];
更新&删除记录
Core Data的调试
Q & A
Thanks!