iOS基本数据库存储方式 - CoreData
CoreData
创建模型文件的过程
1.选择模板


2.添加实体

3.添加实体的属性【注意】属性的首字母必须小写

一、CoreData管理类(必备以下三个类对象)
1.CoreData数据操作的上下文,负责所有的数据操作,类似于SQLite的数据库连接句柄(NSManagedObjectContext)
(1).初始化方式
//参数“ct”的类型
//三种类型
/*
NSConfinementConcurrencyType 默认值,允许在特定的线程中执行,几乎不用
NSPrivateQueueConcurrencyType 只会在主线程中执行
NSMainQueueConcurrencyType 允许在子线程中执行
*/
- (instancetype)initWithConcurrencyType:(NSManagedObjectContextConcurrencyType)ct
(2).设置持久化存储协调器(属性)
persistentStoreCoordinator
2.管理模型(NSManagedObjectModel)
(1).一般都需要先获取获取模型文件的URL地址
/*
参数一:模型文件的名字
参数二:模型文件的后缀名字
【注意】:后缀名为.xcdatamodel的包,里面的.xcdatamodel文件,用数据模型编辑器编辑,编译后为.momd或.mom文件
*/
方法:[[[NSBundle mainBundle] URLForResource:(NSString *)name withExtension:(NSString *)ext]
(2).初始化NSManagedObjectModel对象,加载模型文件,读取App中的所有实体信息
//参数一:该URL即指(1)中的模型文件的url路径
- (nullable instancetype)initWithContentsOfURL:(NSURL *)url;
3.持久化存储协调器(NSPersistentStoreCoordinator)
(1).初始化方式
- (instancetype)initWithManagedObjectModel:(NSManagedObjectModel *)model
说了这么多,其实以上三个coreData核心对象只要我们在创建工程时,打上该勾选,Xcode就会帮我们搭建好框架的,接下来我们只需要知道怎么调用


【注意】黑色表示类名,红色表示类里面的一个属性方法
二、添加数据 : 在上下文中插入一个实体(NSManagedObject)
1.model = [NSEntityDescription insertNewObjectForEntityForName:实体名 inManagedObjectContext:管理实体的上下文];
【注意】该model必须是NSManagedObject的对象,一般模型都继承NSManagedObject
2.通过Key-Value模式设置插入模型的属性值
3.将数据同步到持久化存储库 : save模型 [NSManagedObjectContext save:nil];
三、查询数据
1. 指向某个表的请求类
//参数entityName:即创建的实体名(在SQLite中称为表名)
NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:(NSString*)entityName];
2. 添加查询条件
(1).条件写死在字符串中
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"age = 50"];
(2).动态传值
/*
%K 查询的字段
%@ 查询的值
*/
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"%K = %@", @"age", @(50)];
(3).排序(NSSortDescriptor)
//第一步:初始化
/*
参数一:key值,即排序根据的属性
参数二:NO为降序,YES为升序
*/
NSSortDescriptor *sort = [NSSortDescriptor sortDescriptorWithKey:@"age" ascending:NO];
//第二步:给fetchRequest添加排序方式
fetchRequest.sortDescriptors = @[sort];
(4)范围查询
//范围运算符(两种): IN(指定的值) BETWEEN(开区间)
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"age BETWEEN {15,60}"];
(5).字符串相关查找
/*3⃣️
字符串相关:BEGINSWITH、ENDSWITH、CONTAINS
例:
@“属性名 CONTAINS[cd] ‘包含的字符串’” // 包含某个字符串
@“属性名 BEGINSWITH[c] '包含的字符串'" // 以某个字符串开头
@"属性名 ENDSWITH[d] '包含的字符串'" // 以某个字符串结束
【注意】:包含的字符串要用单引号括上
注:[c]不区分大小写
[d]不区分发音符号即没有重音符号
[cd]既不区分大小写,也不区分发音符号。
*/
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"username ENDSWITH 'wu '"];
(6).通配符查找
/*
通配符:LIKE
例:
@"属性名 LIKE[cd] '*er*'" // *表示多个字符
@"属性名 LIKE[cd] '???er*'" // ?表示一个字符
*/
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"username LIKE '*san*'"];
…………..还有其他条件设置,我会上传一份比较综合的文档给大家
3. 设置查询条件
fetchRequest.predicate = predicate;
4. 执行请求,请求的结果被放在数组中,数组中存放的就是模型
NSArray *result = [NSManagedObjectContext executeFetchRequest:fetchRequest error:&error];
四、删除数据
//删除某一个实体(即模型)
[NSManagedObjectContext deleteObject:实体];
只要对模型做了修改,调用save方法就可以自动修改数据库中的值
[NSManagedObjectContext save:nil];
五、修改
直接修改模型属性的值
save模型
iOS基本数据库存储方式 - CoreData的更多相关文章
- iOS学习——iOS常用的存储方式
不管是在iOS还是Android开发过程中,我们都经常性地需要存储一些状态和数据,比如用户对于App的相关设置.需要在本地缓存的数据等等.根据要存储的的数据的大小.存储性质以及存储类型,在iOS和An ...
- iOS 应用数据存储方式(XML属性列表-plist)
iOS 应用数据存储方式(XML属性列表-plist) 一.ios应用常用的数据存储方式 1.plist(XML属性列表归档) 2.偏好设置 3.NSKeydeArchiver归档(存储自定义对象) ...
- iOS开发UI篇—ios应用数据存储方式(XML属性列表-plist)
iOS开发UI篇—ios应用数据存储方式(XML属性列表-plist) 一.ios应用常用的数据存储方式 1.plist(XML属性列表归档) 2.偏好设置 3.NSKeydeArchiver归档(存 ...
- iOS开发UI篇—ios应用数据存储方式(偏好设置)
iOS开发UI篇—ios应用数据存储方式(偏好设置) 一.简单介绍 很多iOS应用都支持偏好设置,比如保存用户名.密码.字体大小等设置,iOS提供了一套标准的解决方案来为应用加入偏好设置功能 每个应用 ...
- iOS开发UI篇—ios应用数据存储方式(归档)
iOS开发UI篇—ios应用数据存储方式(归档) 一.简单说明 在使用plist进行数据存储和读取,只适用于系统自带的一些常用类型才能用,且必须先获取路径相对麻烦: 偏好设置(将所有的东西都保存在同 ...
- iOS开发UI篇—ios应用数据存储方式(归档) :转发
本文转发至:文顶顶http://www.cnblogs.com/wendingding/p/3775293.html iOS开发UI篇—ios应用数据存储方式(归档) 一.简单说明 在使用plist ...
- iOS常用的存储方式介绍
在iOS App开发过程中经常需要操作一些需要持续性保留的数据,比如用户对于App的相关设置.需要在本地缓存的数据等等.本文针对OC中经常使用的一下存储方式做了个整理. 常用的存储工具/方式: NSU ...
- iOS中的存储方式
1.Plist 1.1 了解沙盒 每个iOS应用都有自己的应用沙盒(应用沙盒就是文件系统目录),与其它文件系统隔离.应用必须呆在自己的沙盒里.其它应用不能访问该沙盒. 一个程序中所有的非代码文件都可以 ...
- ios应用数据存储方式
一.ios应用常用的数据存储方式 1.plist(XML属性列表归档) 2.偏好设置 3.NSKeydeArchiver归档(存储自定义对象) 4.SQLite3(数据库,关系型数据库,不能直接存储对 ...
随机推荐
- C#开发奇技淫巧三:把dll放在不同的目录让你的程序更整洁
系列文章 C#开发奇技淫巧一:调试windows系统服务 C#开发奇技淫巧二:根据dll文件加载C++或者Delphi插件 C#开发奇技淫巧三:把dll放在不同的目录让你的程序更整洁 程序目录的整理 ...
- 应用Grunt自动化地优化你的项目前端
在不久前我曾写了一篇 应用r.js来优化你的前端 的文章,为大家介绍了r.js这个实用工具,它可以很好地压缩.合并前端文件并打包整个项目.但是如果将r.js放到项目中,我们不得不顾及到一个问题——项目 ...
- 一种简单,轻量,灵活的C#对象转Json对象的方案(续)
本文参考资料 一种简单,轻量,灵活的C#对象转Json对象的方案 [源码]Literacy 快速反射读写对象属性,字段 一段废话 之前我已经介绍了这个方案的名称为JsonBuilder,这套方案最大的 ...
- delete
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- Atitit Data Matrix dm码的原理与特点
Atitit Data Matrix dm码的原理与特点 Datamatrix原名Datacode,由美国国际资料公司(International Data Matrix, 简称ID Matrix)于 ...
- js ajax php分页组件
github https://github.com/lihefen/pageList html页面 <!DOCTYPE html><html><head>< ...
- 解析大型.NET ERP系统 业务逻辑设计与实现
根据近几年的制造业软件开发经验,以我开发人员的理解角度,简要说明功能(Feature)是如何设计与实现的,供参考. 因架构的不同,技术实现上会有所差异,我的经验仅限定于Windows Form程序. ...
- 移动端HTML5音频与视频问题及解决方案
最近在研究用视频代替动画,用视频代替精灵动画,我们称这种视频叫做交互视频. 传统的精灵动画: 磁盘空间大,下载慢,尤其是在线播放,会更慢 文件太多,在线播放的时候,太多http请求,会导致响应慢,或者 ...
- 深入理解Sqlserver文件存储之页和应用 (转)
我们每天都在使用数据库,我们部门使用最多的关系数据库有Sqlserver,Oracle,有没有想过这些数据库是怎么存放到操作系统的文件中的?有时候为了能够设计出最优的表结构,写出高性能的Sqlserv ...
- JavaScript学习(一) —— 环境搭建与JavaScript初探
1.开发环境搭建 本系列教程的开发工具,我们采用HBuilder. 可以去网上下载最新的版本,然后解压一下就能直接用了.学习JavaScript,环境搭建是非常简单的,或者说,只要你有一个浏览器,一个 ...