首页 > 数据库技术 > 详细

数据库-Core Data

时间:2014-02-20 03:46:09      阅读:436      评论:0      收藏:0      [点我收藏+]

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

bubuko.com,布布扣


数据库-Core Data 

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

新浪微博http://weibo.com/luohanchenyilong
bubuko.com,布布扣 bubuko.com,布布扣
iOS应用数据存取的常用方式 
? XML属性列表 -- PList
? NSKeyedArchiver 归档 ?Preference(偏好设置) ? SQLite3
? Core Data
bubuko.com,布布扣
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是封装好的数据库操作框架
数据bubuko.com,布布扣
bubuko.com,布布扣
模型文件及实体(Entity)
? 要使用CodeData,首先需要定义模型文件,描述应用程
序中的所有实体(Entities)? 所谓实体,是跟数据库进行映射的对象 
bubuko.com,布布扣
bubuko.com,布布扣
NSManagedObject--对应数据库中的一条记录 
bubuko.com,布布扣
bubuko.com,布布扣
Core Data主要对象关系示意图 类似于数据库的句柄,handle,用来操纵数据库
                持久化存储调度者,是数据库与对象之间的
bubuko.com,布布扣
bubuko.com,布布扣 bubuko.com,布布扣
在开发中,只会用到一次,如果不理解,直接粘代码

bubuko.com,布布扣bubuko.com,布布扣
bubuko.com,布布扣
bubuko.com,布布扣
Core Data主要对象
? NSManagedObjectContext:负责应用和数据库之间的交互(CRUD)
? NSPersistentStoreCoordinator:添加持久化存储库(如SQLite数据 库),是物理数据存储的物理文件和程序之间的联系的桥梁,负责管 理不同对象上下文
? NSManagedObjectModel:被管理的对象模型 ?NSEntityDescription:实体描述 
bubuko.com,布布扣
打开数据库 
// 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;

bubuko.com,布布扣
bubuko.com,布布扣
新增记录 
Person *p = [NSEntityDescriptioninsertNewObjectForEntityForName:@"Person"inManagedObjectContext:_context];
p.name = @"张三"; p.age = @18;
[_context save:nil]; 
bubuko.com,布布扣
查询数据--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];
bubuko.com,布布扣
查询数据 
NSFetchRequest *request = [NSFetchRequestfetchRequestWithEntityName:@"Person"];
request.predicate = [NSPredicatepredicateWithFormat:@"%K LIKE ‘*52*‘ OR name CONTAINS ‘‘", @"phoneNo"];
NSArray *array = [_contextexecuteFetchRequest:request error:nil];
bubuko.com,布布扣
更新&删除记录 
1. 找到要更新、删除的记录 2. 更新:修改对象属性3. 删除:上下文删除对象 4. 上下文保存
bubuko.com,布布扣
Core Data的调试 
bubuko.com,布布扣
Thanks! 
bubuko.com,布布扣

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

数据库-Core Data

原文:http://www.cnblogs.com/ChenYilong/p/3556222.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!