iOS数据库操作之coredata详细操作步骤
iOS数据库操作之coredata详细操作步骤
• XML属性列表 -- PList
• NSKeyedArchiver 归档 •Preference(偏好设置) • SQLite3
• Core Data
![](http://postachio-images.s3-website-us-east-1.amazonaws.com/96083b7bb56878d8f4821117b754ca3a/8025f62ec245ed8fdcc41a592a4ca1a1/w600_897b223fe1bf63457e55de6d396ff5bb.png)
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文档和示例程序:
![](http://postachio-images.s3-website-us-east-1.amazonaws.com/96083b7bb56878d8f4821117b754ca3a/a5c34b40637515ba8e908e644e376232/w600_98afdc5fddd18a081e8a4b5c129b5227.png)
![](http://postachio-images.s3-website-us-east-1.amazonaws.com/96083b7bb56878d8f4821117b754ca3a/a5c34b40637515ba8e908e644e376232/w600_88f5e63327826153ec771b95e4d7da11.png)
![](http://postachio-images.s3-website-us-east-1.amazonaws.com/96083b7bb56878d8f4821117b754ca3a/a5c34b40637515ba8e908e644e376232/w600_950b83dd1e97e0c6a2487f26b510a5e5.png)
![](http://postachio-images.s3-website-us-east-1.amazonaws.com/96083b7bb56878d8f4821117b754ca3a/a5c34b40637515ba8e908e644e376232/w600_98afdc5fddd18a081e8a4b5c129b5227.png)
![](http://postachio-images.s3-website-us-east-1.amazonaws.com/96083b7bb56878d8f4821117b754ca3a/a5c34b40637515ba8e908e644e376232/w600_88f5e63327826153ec771b95e4d7da11.png)
![](http://postachio-images.s3-website-us-east-1.amazonaws.com/96083b7bb56878d8f4821117b754ca3a/a5c34b40637515ba8e908e644e376232/w600_ce622ee69e0012c4a9fdf4d23dc3694c.png)
![](http://postachio-images.s3-website-us-east-1.amazonaws.com/96083b7bb56878d8f4821117b754ca3a/a5c34b40637515ba8e908e644e376232/w600_14dbf948aa5a7eed45dd8b2ea50e29b3.png)
![](http://postachio-images.s3-website-us-east-1.amazonaws.com/96083b7bb56878d8f4821117b754ca3a/a5c34b40637515ba8e908e644e376232/w600_378f2b1e50c98e2bdf749fb63743ae16.png)
![](http://postachio-images.s3-website-us-east-1.amazonaws.com/96083b7bb56878d8f4821117b754ca3a/a5c34b40637515ba8e908e644e376232/w600_98afdc5fddd18a081e8a4b5c129b5227.png)
![](http://postachio-images.s3-website-us-east-1.amazonaws.com/96083b7bb56878d8f4821117b754ca3a/a5c34b40637515ba8e908e644e376232/w600_e9b01ead36907ba261c83a2621e94c1a.png)
![](http://postachio-images.s3-website-us-east-1.amazonaws.com/96083b7bb56878d8f4821117b754ca3a/a5c34b40637515ba8e908e644e376232/w600_98afdc5fddd18a081e8a4b5c129b5227.png)
![](http://postachio-images.s3-website-us-east-1.amazonaws.com/96083b7bb56878d8f4821117b754ca3a/a5c34b40637515ba8e908e644e376232/w600_e9b01ead36907ba261c83a2621e94c1a.png)
![](http://postachio-images.s3-website-us-east-1.amazonaws.com/96083b7bb56878d8f4821117b754ca3a/a5c34b40637515ba8e908e644e376232/w600_88f5e63327826153ec771b95e4d7da11.png)
![](http://postachio-images.s3-website-us-east-1.amazonaws.com/96083b7bb56878d8f4821117b754ca3a/a5c34b40637515ba8e908e644e376232/w600_c4f9f5286fdf0b7e5cc5c65060663799.png)
![](http://postachio-images.s3-website-us-east-1.amazonaws.com/96083b7bb56878d8f4821117b754ca3a/a5c34b40637515ba8e908e644e376232/w600_5e0dfb77e6ae22e82dc37cbf4442046a.png)
![](http://postachio-images.s3-website-us-east-1.amazonaws.com/96083b7bb56878d8f4821117b754ca3a/a5c34b40637515ba8e908e644e376232/w600_98afdc5fddd18a081e8a4b5c129b5227.png)
![](http://postachio-images.s3-website-us-east-1.amazonaws.com/96083b7bb56878d8f4821117b754ca3a/a5c34b40637515ba8e908e644e376232/w600_e9b01ead36907ba261c83a2621e94c1a.png)
![](http://postachio-images.s3-website-us-east-1.amazonaws.com/96083b7bb56878d8f4821117b754ca3a/a5c34b40637515ba8e908e644e376232/w600_98afdc5fddd18a081e8a4b5c129b5227.png)
![](http://postachio-images.s3-website-us-east-1.amazonaws.com/96083b7bb56878d8f4821117b754ca3a/a5c34b40637515ba8e908e644e376232/w600_e9b01ead36907ba261c83a2621e94c1a.png)
![](http://postachio-images.s3-website-us-east-1.amazonaws.com/96083b7bb56878d8f4821117b754ca3a/a5c34b40637515ba8e908e644e376232/w600_88f5e63327826153ec771b95e4d7da11.png)
- 首先需要创建一个操作数据库的上下文。NSManagedObjectContext
- 操作数据库的上下文需要设置一个调度者属性,这个调度者是用来将图形化
建立的模型和数据库联系起来。
- 给调度者添加一个需要联系的数据库。
![](http://postachio-images.s3-website-us-east-1.amazonaws.com/96083b7bb56878d8f4821117b754ca3a/a5c34b40637515ba8e908e644e376232/w600_e9b01ead36907ba261c83a2621e94c1a.png)
![](http://postachio-images.s3-website-us-east-1.amazonaws.com/96083b7bb56878d8f4821117b754ca3a/a5c34b40637515ba8e908e644e376232/w600_88f5e63327826153ec771b95e4d7da11.png)
1. 建立数据模型DataModel
* Entity - Entities(实体)
暂时理解为数据库中的表,在定义数据模型时,第一步就要定义实体
* Attributes(属性)
暂时理解为数据库中的字段
2. 建立NSManagedObject(被管理的对象)
以上操作全部用鼠标就可以完成(属性名字除外)
在数据模型最终确立之前,person.h&person.m中的内容都是自动生成的,不需要修改其中代码。
NSManagedObject的内容是通过图形化的界面确定实体的属性之后,自动生成的。
@dynamic 编译器会动态生成getter&setter方法,提高程序的扩展度。
FetechedResultController执行查询后,返回遵守了
NSFetchedResultsSectionInfo协议的对象的数组
除了安全,设计公司高级机密的,可以使用静态库
.a
.framework
对于iOS程序员,如果将自己的代码包在.a,会形成依赖!
![](http://postachio-images.s3-website-us-east-1.amazonaws.com/96083b7bb56878d8f4821117b754ca3a/a5c34b40637515ba8e908e644e376232/w600_a99bf2825767e613aa9808199bc479c1.png)
![](http://postachio-images.s3-website-us-east-1.amazonaws.com/96083b7bb56878d8f4821117b754ca3a/a5c34b40637515ba8e908e644e376232/w600_b0db05e930a48e9eb150b3dea80fd2ad.png)
![](http://postachio-images.s3-website-us-east-1.amazonaws.com/96083b7bb56878d8f4821117b754ca3a/a5c34b40637515ba8e908e644e376232/w600_84ff18db3521a492627795bddcffa830.png)
![](http://postachio-images.s3-website-us-east-1.amazonaws.com/96083b7bb56878d8f4821117b754ca3a/a5c34b40637515ba8e908e644e376232/w600_98afdc5fddd18a081e8a4b5c129b5227.png)
![](http://postachio-images.s3-website-us-east-1.amazonaws.com/96083b7bb56878d8f4821117b754ca3a/a5c34b40637515ba8e908e644e376232/w600_e9b01ead36907ba261c83a2621e94c1a.png)
iOS数据库操作之coredata详细操作步骤的更多相关文章
- [MySQL数据库之记录的详细操作:增、改、删、单表查询、多表查询]
[MySQL数据库之记录的详细操作:增.改.删.单表查询.多表查询] 记录详细操作 增.删.改 增: insert t1(字段1,字段2,字段3) values (值1,值2,值3), (值1,值2, ...
- [MySQL数据库之表的详细操作:存储引擎、表介绍、表字段之数据类型]
[MySQL数据库之表的详细操作:存储引擎.表介绍.表字段之数据类型] 表的详细操作 存储引擎 mysql中建立的库======>文件夹 库中建立的表======>文件 用来存储数据的文件 ...
- [iOS]数据库第三方框架FMDB详细讲解
[iOS]数据库第三方框架FMDB详细讲解 初识FMDB iOS中原生的SQLite API在进行数据存储的时候,需要使用C语言中的函数,操作比较麻烦.于是,就出现了一系列将SQLite API进行封 ...
- Mysql数据库的(行记录)详细操作
在Mysql管理软件中, 可以通过sql语句中的dml语言来实现数据的操作, 包括 使用INSERT实现数据的插入 UPDATE实现数据的更新 使用DELETE实现数据的删除 使用SELECT查询数据 ...
- IOS数据库操作SQLite3使用详解(转)
iPhone中支持通过sqlite3来访问iPhone本地的数据库.具体使用方法如下1:添加开发包libsqlite3.0.dylib首先是设置项目文件,在项目中添加iPhone版的sqlite3的数 ...
- yii2 rbac权限控制详细操作步骤
作者:白狼 出处:http://www.manks.top/article/yii2_rbac_description本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出 ...
- yii2权限控制rbac之详细操作步骤
本篇的主题是 rbac权限控制的详细操作步骤,注意是操作步骤哦,关于配置与rbac的搭建,我们在博文 yii2搭建完美后台并实现rbac权限控制实例教程说的再清楚不过了. 但是,在很多人的反馈下,说是 ...
- iOS 数据库操作(使用FMDB)
iOS 数据库操作(使用FMDB) iOS中原生的SQLite API在使用上相当不友好,在使用时,非常不便.于是,就出现了一系列将SQLite API进行封装的库,例如FMDB.Plausibl ...
- iOS数据库操作(使用FMDB)
iOS中原生的SQLite API在使用上相当不友好,在使用时,非常不便.于是,就出现了一系列将SQLite API进行封装的库,例如FMDB.PlausibleDatabase.sqlitepers ...
随机推荐
- anoconda 神经网络 相关操作
1. conda 相关操作 建立新环境:conda crearte -n NewName python=版本(3.6) 激活环境:conda activate NewName 关闭环境:conda d ...
- 2-Eighteenth Scrum Meeting-20151218
任务安排 成员 今日完成 明日任务 闫昊 写完学习进度记录的数据库操作 写完学习进度记录的数据库操作 唐彬 编写与服务器交互的代码 和服务器老师交流讨论区后台接口 史烨轩 获取视频url 尝试使用 ...
- YQCB冲刺第二周第七天
今天的任务依旧为界面的美化. 遇到的问题为不熟悉css的使用. 站立会议 任务面板
- 哥java学识有大进 干回之前的小学生系统像切菜一样简单 不说了 来代码
package runok; import java.util.*; import java.awt.*; import java.awt.event.ActionEvent; import java ...
- Bean的加载
ClassPathXmlApplicationContext存储内容 为了更理解ApplicationContext,拿一个实例ClassPathXmlApplicationContext举例,看一下 ...
- PAT 甲级 1110 Complete Binary Tree
https://pintia.cn/problem-sets/994805342720868352/problems/994805359372255232 Given a tree, you are ...
- SqlServer 获取字符串中小写字母的sql语句
SQL字符串截取(SubString) 作用:返回第一个参数中从第二个参数指定的位置开始.第三个参数指定的长度的子字符串. 有时候我们会截取字符串中的一些特殊想要的东西,大小写字母.模号.汉字.数字等 ...
- aop 例外通知就是记录业务方法出现错误 并保存到日志里面的功能
aop 例外通知就是记录业务方法出现错误 并保存到日志里面的功能
- bzoj 4448 [Scoi2015]情报传递 (树链剖分+主席树)
题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=4448 题面: Description 奈特公司是一个巨大的情报公司,它有着庞大的情报网络 ...
- 【刷题】LOJ 6004 「网络流 24 题」圆桌聚餐
题目描述 假设有来自 \(n\) 个不同单位的代表参加一次国际会议.每个单位的代表数分别为 \(r_i\) .会议餐厅共有 \(m\) 张餐桌,每张餐桌可容纳 \(c_i\) 个代表就餐. 为了使 ...