数据库-Core Data

技术博客http://www.cnblogs.com/ChenYilong/ 
新浪微博http://weibo.com/luohanchenyilong 
数据库-Core Data

数据库-Core Data


数据库-Core Data 

技术博客http://www.cnblogs.com/ChenYilong/

新浪微博http://weibo.com/luohanchenyilong
数据库-Core Data 数据库-Core Data
iOS应用数据存取的常用方式 
? XML属性列表 -- PList
? NSKeyedArchiver 归档 ?Preference(偏好设置) ? SQLite3
? Core Data
数据库-Core Data
Core Data简介 
? Core Data iOS SDK 里的一个很强大的框架,允许程序员以面向对象 的方式储存和管理数据。使用Core Data框架,程序员可以很轻松有效 地通过面向对象的接口管理数据 
? Core Data框架提供了对象-关系映射(ORM)的功能,即能够将OC对象转 化成数据,保存在SQLite3数据库文件中,也能够将保存在数据库中的 数据还原成OC对象 
? 在数据操作过程中,无需编写任何SQL语句 
? 要使用Core Data,需要导入CoreData框架 

APP
处理)
Controller -> View
|
Model
| Services(实际的数据 |
DB数据库文件 CoreData是封装好的数据库操作框架
数据数据库-Core Data
数据库-Core Data
模型文件及实体(Entity)
? 要使用CodeData,首先需要定义模型文件,描述应用程
序中的所有实体(Entities)? 所谓实体,是跟数据库进行映射的对象 
数据库-Core Data
数据库-Core Data
NSManagedObject--对应数据库中的一条记录 
数据库-Core Data
数据库-Core Data
Core Data主要对象关系示意图 类似于数据库的句柄,handle,用来操纵数据库
                持久化存储调度者,是数据库与对象之间的
数据库-Core Data
数据库-Core Data 数据库-Core Data
在开发中,只会用到一次,如果不理解,直接粘代码

数据库-Core Data数据库-Core Data
数据库-Core Data
数据库-Core Data
Core Data主要对象
? NSManagedObjectContext:负责应用和数据库之间的交互(CRUD)
? NSPersistentStoreCoordinator:添加持久化存储库(如SQLite数据 库),是物理数据存储的物理文件和程序之间的联系的桥梁,负责管 理不同对象上下文
? NSManagedObjectModel:被管理的对象模型 ?NSEntityDescription:实体描述 
数据库-Core Data
打开数据库 
// 1. 实例化持久化的存储 
// 1.1 Bundle中加载被管理的数据模型 
NSManagedObjectModel *model = [NSManagedObjectModelmergedModelFromBundles:nil];
// 1.2 实例化持久化存储调度 
NSPersistentStoreCoordinator *store = [[NSPersistentStoreCoordinator alloc]initWithManagedObjectModel:model];
...
// 1.3 添加持久化存储(SQLite)
[store addPersistentStoreWithType:NSSQLiteStoreTypeconfiguration:nil URL:url options:nil
error:&error];
...
// 管理对象上下文 _context = [[NSManagedObjectContext alloc]init]; _context.persistentStoreCoordinator = store;

数据库-Core Data
数据库-Core Data
新增记录 
Person *p = [NSEntityDescriptioninsertNewObjectForEntityForName:@"Person"inManagedObjectContext:_context];
p.name = @"张三"; p.age = @18;
[_context save:nil]; 
数据库-Core Data
查询数据--NSFetchedResultsControllerNSManagedObjectContext *context = [[DataManagersharedDataManager] sharedContext];
NSFetchRequest *request = [NSFetchRequestfetchRequestWithEntityName:@"Person"];
// 定义查询排序 NSSortDescriptor *sort = [NSSortDescriptorsortDescriptorWithKey:@"name" ascending:YES]; request.sortDescriptors = @[sort];
// 定义查询结果控制器 _fetchedResultController = [[NSFetchedResultsController alloc]initWithFetchRequest:request
managedObjectContext:context sectionNameKeyPath:nilcacheName:nil]; ...
[
_fetchedResultController performFetch:&error];
数据库-Core Data
查询数据 
NSFetchRequest *request = [NSFetchRequestfetchRequestWithEntityName:@"Person"];
request.predicate = [NSPredicatepredicateWithFormat:@"%K LIKE ‘*52*‘ OR name CONTAINS ‘‘", @"phoneNo"];
NSArray *array = [_contextexecuteFetchRequest:request error:nil];
数据库-Core Data
更新&删除记录 
1. 找到要更新、删除的记录 2. 更新:修改对象属性3. 删除:上下文删除对象 4. 上下文保存
数据库-Core Data
Core Data的调试 
数据库-Core Data
Thanks! 
数据库-Core Data

技术博客http://www.cnblogs.com/ChenYilong/ 
新浪微博http://weibo.com/luohanchenyilong

数据库-Core Data

上一篇:解决Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future:


下一篇:Oracle11g创建表空间语句