码迷,mamicode.com
首页 > 移动开发 > 详细

iOS数据库操作之coredata详细操作步骤

时间:2014-05-12 11:36:49      阅读:415      评论:0      收藏:0      [点我收藏+]

标签:des   style   blog   class   code   tar   

iOS数据库操作之coredata详细操作步骤


 
 
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框架 

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,布布扣

bubuko.com,布布扣

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

下面是iOS数据库操作之coredata详细操作步骤:附上pdf文档和示例程序:

bubuko.com,布布扣
bubuko.com,布布扣
bubuko.com,布布扣
CoreData
1. 常用类和方法 (注意需要导入 coredata 框架 )
bubuko.com,布布扣
表结构:NSEntityDescription
表记录:NSManagedObject 数据库存放方式:NSPersistentStoreCoordinator(持久化存储协调者) 数据库操作:NSManagedObjectContext(被管理的对象上下文)
bubuko.com,布布扣
bubuko.com,布布扣
2. xcode 图形管理
bubuko.com,布布扣
2. 3.
4.
bubuko.com,布布扣
bubuko.com,布布扣
bubuko.com,布布扣
bubuko.com,布布扣
bubuko.com,布布扣
bubuko.com,布布扣
bubuko.com,布布扣
bubuko.com,布布扣
2.操作数据库
bubuko.com,布布扣
bubuko.com,布布扣
bubuko.com,布布扣
bubuko.com,布布扣
bubuko.com,布布扣
bubuko.com,布布扣
一.连接数据库
  1. 首先需要创建一个操作数据库的上下文。NSManagedObjectContext
  1. 操作数据库的上下文需要设置一个调度者属性,这个调度者是用来将图形化
    建立的模型和数据库联系起来。
  1. 给调度者添加一个需要联系的数据库。
二.添加,更新,删除
添加:
1. 新建实体 INST (插入) 2. 设置实体的属性
3. 保存上下文
更新:
1. 判断是否已有一模一样的模型 2. 设置实体属性
3. 保存上下文
删除
三.查询
1.使用 NSFetchedResultsController 控制器
2.1 当操作数据上下文的内容改变的时候,会自动调用抓取结果控制器的代理方 法
3.
bubuko.com,布布扣
bubuko.com,布布扣
注意:一定要执行抓取请求,返回的数据在 sections 里,这个数组中装的都是遵 守 NSFetchedResultsSectionInfo 这个协议的对象。通过
numberOfObjects 就能获取一组有多少数据对象了。
 
 

1. 建立数据模型DataModel

* Entity - Entities(实体)
暂时理解为数据库中的表,在定义数据模型时,第一步就要定义实体
* Attributes(属性)
暂时理解为数据库中的字段

2. 建立NSManagedObject(被管理的对象)

以上操作全部用鼠标就可以完成(属性名字除外)
在数据模型最终确立之前,person.h&person.m中的内容都是自动生成的,不需要修改其中代码。

NSManagedObject的内容是通过图形化的界面确定实体的属性之后,自动生成的。

@dynamic 编译器会动态生成getter&setter方法,提高程序的扩展度。

FetechedResultController执行查询后,返回遵守了
NSFetchedResultsSectionInfo协议的对象的数组


除了安全,设计公司高级机密的,可以使用静态库
.a
.framework

对于iOS程序员,如果将自己的代码包在.a,会形成依赖!

 

 
 
 
 
 
 
 
 
 
coredata第三方框架,附上官方示例程序:
数据库工具_CoreData_MagicalRecord-develop
 
 
 
bubuko.com,布布扣
bubuko.com,布布扣
bubuko.com,布布扣
bubuko.com,布布扣
bubuko.com,布布扣
chenyilong. Powered by Postach.io

iOS数据库操作之coredata详细操作步骤,布布扣,bubuko.com

iOS数据库操作之coredata详细操作步骤

标签:des   style   blog   class   code   tar   

原文地址:http://www.cnblogs.com/ChenYilong/p/3720382.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!