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

CHENYILONG

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



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

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)
? 要使用CodeData,首先需要定义模型文件,描述应用程
序中的所有实体(Entities)? 所谓实体,是跟数据库进行映射的对象 


NSManagedObject--对应数据库中的一条记录 


Core
Data
主要对象关系示意图 类似于数据库的句柄,handle,用来操纵数据库
               
持久化存储调度者,是数据库与对象之间的

 
在开发中,只会用到一次,如果不理解,直接粘代码




Core
Data
主要对象
? NSManagedObjectContext:负责应用和数据库之间的交互(CRUD)
? NSPersistentStoreCoordinator:添加持久化存储库(如SQLite数据
库),是物理数据存储的物理文件和程序之间的联系的桥梁,负责管
理不同对象上下文
? NSManagedObjectModel:被管理的对象模型 ?NSEntityDescription:实体描述 

打开数据库 
//
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;



新增记录 
Person *p
= [NSEntityDescriptioninsertNewObjectForEntityForName:@"Person"inManagedObjectContext:_context];
p.name = @"张三";
p.age = @18;
[_context save:nil]; 

查询数据--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];

查询数据 
NSFetchRequest *request
= [NSFetchRequestfetchRequestWithEntityName:@"Person"];
request.predicate =
[NSPredicatepredicateWithFormat:@"%K
LIKE ‘*52*‘ OR name CONTAINS ‘三‘", @"phoneNo"];
NSArray *array
= [_contextexecuteFetchRequest:request error:nil];

更新&删除记录 
1. 找到要更新、删除的记录 2. 更新:修改对象属性3. 删除:上下文删除对象 4. 上下文保存

Core
Data
的调试 




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

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

Fullscreen

CoreData

1. 常用类和方法 (注意需要导入 coredata 框架 )

表结构:NSEntityDescription

表记录:NSManagedObject 数据库存放方式:NSPersistentStoreCoordinator(持久化存储协调者)
数据库操作:NSManagedObjectContext(被管理的对象上下文)

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

2. xcode 图形管理

2. 3.

4.

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

2.操作数据库

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

一.连接数据库

  1. 首先需要创建一个操作数据库的上下文。NSManagedObjectContext

  1. 操作数据库的上下文需要设置一个调度者属性,这个调度者是用来将图形化
    建立的模型和数据库联系起来。

  1. 给调度者添加一个需要联系的数据库。

二.添加,更新,删除

添加:

1. 新建实体 INST (插入) 2. 设置实体的属性

3. 保存上下文

更新:

1. 判断是否已有一模一样的模型 2. 设置实体属性

3. 保存上下文

删除

三.查询

1.使用 NSFetchedResultsController 控制器

2.1 当操作数据上下文的内容改变的时候,会自动调用抓取结果控制器的代理方 法

3.

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

注意:一定要执行抓取请求,返回的数据在 sections 里,这个数组中装的都是遵 守 NSFetchedResultsSectionInfo
这个协议的对象。通过

numberOfObjects 就能获取一组有多少数据对象了。

1. 建立数据模型DataModel

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

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

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

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

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

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

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

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

查询工具网:http://blog.csdn.net/ajrm0925/article/details/7410978 比较好的文档:http://www.tuicool.com/articles/3mmIZnhttp://blog.csdn.net/jiangshurunhe/article/details/10304309

coredata第三方框架,附上官方示例程序:

数据库工具_CoreData_MagicalRecord-develop

数据库工具_CoreData_MagicalRecord-...
538.5 KB

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

chenyilong. Powered by Postach.io

时间: 2024-11-08 19:05:55

iOS数据库操作之coredata详细操作步骤的相关文章

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

CoreData 1.  常用类和方法  ( 注意需要导入  coredata  框架  ) 表结构:NSEntityDescription 表记录:NSManagedObject 数据库存放方式:NSPersistentStoreCoordinator(持久化存储协调者) 数据库操作:NSManagedObjectContext(被管理的对象上下文) 技术博客 http://www.cnblogs.com/ChenYilong/  新浪微博 http://weibo.com/luohanche

[iOS]数据库第三方框架FMDB详细讲解

[iOS]数据库第三方框架FMDB详细讲解 初识FMDB iOS中原生的SQLite API在进行数据存储的时候,需要使用C语言中的函数,操作比较麻烦.于是,就出现了一系列将SQLite API进行封装的库,例如FMDB.PlausibleDatabase.sqlitepersistentobjects等. FMDB是一款简洁.易用的封装库.因此,在这里推荐使用第三方框架FMDB,它是对libsqlite3框架的封装,用起来的步骤与SQLite使用类似,并且它对于多线程的并发操作进行了处理,所以

Mysql数据库的(行记录)详细操作

在Mysql管理软件中, 可以通过sql语句中的dml语言来实现数据的操作, 包括 使用INSERT实现数据的插入 UPDATE实现数据的更新 使用DELETE实现数据的删除 使用SELECT查询数据以及 插入数据INSERT: . 插入完整数据(顺序插入) 语法一: INSERT INTO 表名(字段1,字段2,字段3-字段n) VALUES(值1,值2,值3-值n); #指定字段来插入数据,插入的值要和你前面的字段相匹配 语法二: INSERT INTO 表名 VALUES (值1,值2,值

iOS 数据库升级 如何进行操作?

在iOS开发中,经常会遇到数据库升级,修改删除表的某些字段,这就需要我们来进行处理了,下面分析两种数据库的升级处理问题! 1.比如:我们常使用fmdb或者其他方式创建sqlite数据库,但是由于版本迭代问题,常常有需求要更新数据库,比如加字段.删除.修改字段等等,怎么样才能升级数据库且保持原来存的数据有效呢,上代码: const static NSInteger FAMILY_LIST_DB_MANAGER_VER = 1; @implementation KSFamilyListDBManag

iOS数据库操作(使用FMDB)

iOS学习笔记(十六)——数据库操作(使用FMDB) 分类: iOS开发 2013-07-15 23:19 8655人阅读 评论(5) 收藏 举报 目录(?)[+] iOS中原生的SQLite API在使用上相当不友好,在使用时,非常不便.于是,就出现了一系列将SQLite API进行封装的库,例如FMDB.PlausibleDatabase.sqlitepersistentobjects等,FMDB (https://github.com/ccgus/fmdb) 是一款简洁.易用的封装库,这一

iOS 数据库操作(使用FMDB)

iOS 数据库操作(使用FMDB) iOS中原生的SQLite API在使用上相当不友好,在使用时,非常不便.于是,就出现了一系列将SQLite API进行封装的库,例如FMDB.PlausibleDatabase.sqlitepersistentobjects等,FMDB (https://github.com/ccgus/fmdb) 是一款简洁.易用的封装库,这一篇文章简单介绍下FMDB的使用. 在FMDB下载文件后,工程中必须导入如下文件,并使用 libsqlite3.dylib 依赖包.

iOS数据库操作之FMDB框架的使用

原文链接:http://blog.csdn.net/xyz_lmn/article/details/9312837 iOS中原生的SQLite API在使用上相当不友好,在使用时,非常不便.于是,就出现了一系列将SQLite API进行封装的库,例如FMDB.PlausibleDatabase.sqlitepersistentobjects等,FMDB (https://github.com/ccgus/fmdb) 是一款简洁.易用的封装库,这一篇文章简单介绍下FMDB的使用. 在FMDB下载文

科研及工程实践中光纤涂覆机详细操作步骤(图文)

科研及工程实践中光纤涂覆机详细操作步骤(图文)一.清洁涂覆夹具涂覆夹具包括上.下两片光滑的石英片,每片的中间有一个半圆形槽,为了使上下两石英片扣和形成完美的圆形腔,需要清洁附着在石英片表面的灰尘,可以使用无尘纸沾酒精来清洗.用沾有酒精的无尘纸轻轻擦拭石英片,擦拭时候注意从一边单向擦拭,切勿来回擦拭(来回擦拭擦不干净,同时容易损伤石英表面镀金层),擦拭完毕后稍等残余酒精挥发或者用干的无尘纸再擦拭一遍后进行下一步操作.请注意:清洗时需轻轻擦拭,以防划伤石英片光滑表面 二.连接电源三.打开涂覆机电源开

Windows server iis部署Django详细操作

教程基于Windows server2012+Python3.6+IIS之上部署django的,同样适用于server2012之上的版本服务器和windows7以上的windows操作系统. 文章来自:django中文网,https://www.django.cn/article/show-21.html 如果觉得看文字没意思,想看视频教程的,请点击这里:Django项目部署视频教程 1.安装IIS和CGI 打开服务器管理器,选择添加角色和功能,选择要添加的服务器角色(WEB服务器IIS),然后