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的更多相关文章

  1. iOS学习——iOS常用的存储方式

    不管是在iOS还是Android开发过程中,我们都经常性地需要存储一些状态和数据,比如用户对于App的相关设置.需要在本地缓存的数据等等.根据要存储的的数据的大小.存储性质以及存储类型,在iOS和An ...

  2. iOS 应用数据存储方式(XML属性列表-plist)

    iOS 应用数据存储方式(XML属性列表-plist) 一.ios应用常用的数据存储方式 1.plist(XML属性列表归档) 2.偏好设置 3.NSKeydeArchiver归档(存储自定义对象) ...

  3. iOS开发UI篇—ios应用数据存储方式(XML属性列表-plist)

    iOS开发UI篇—ios应用数据存储方式(XML属性列表-plist) 一.ios应用常用的数据存储方式 1.plist(XML属性列表归档) 2.偏好设置 3.NSKeydeArchiver归档(存 ...

  4. iOS开发UI篇—ios应用数据存储方式(偏好设置)

    iOS开发UI篇—ios应用数据存储方式(偏好设置) 一.简单介绍 很多iOS应用都支持偏好设置,比如保存用户名.密码.字体大小等设置,iOS提供了一套标准的解决方案来为应用加入偏好设置功能 每个应用 ...

  5. iOS开发UI篇—ios应用数据存储方式(归档)

    iOS开发UI篇—ios应用数据存储方式(归档)  一.简单说明 在使用plist进行数据存储和读取,只适用于系统自带的一些常用类型才能用,且必须先获取路径相对麻烦: 偏好设置(将所有的东西都保存在同 ...

  6. iOS开发UI篇—ios应用数据存储方式(归档) :转发

    本文转发至:文顶顶http://www.cnblogs.com/wendingding/p/3775293.html iOS开发UI篇—ios应用数据存储方式(归档)  一.简单说明 在使用plist ...

  7. iOS常用的存储方式介绍

    在iOS App开发过程中经常需要操作一些需要持续性保留的数据,比如用户对于App的相关设置.需要在本地缓存的数据等等.本文针对OC中经常使用的一下存储方式做了个整理. 常用的存储工具/方式: NSU ...

  8. iOS中的存储方式

    1.Plist 1.1 了解沙盒 每个iOS应用都有自己的应用沙盒(应用沙盒就是文件系统目录),与其它文件系统隔离.应用必须呆在自己的沙盒里.其它应用不能访问该沙盒. 一个程序中所有的非代码文件都可以 ...

  9. ios应用数据存储方式

    一.ios应用常用的数据存储方式 1.plist(XML属性列表归档) 2.偏好设置 3.NSKeydeArchiver归档(存储自定义对象) 4.SQLite3(数据库,关系型数据库,不能直接存储对 ...

随机推荐

  1. 练习JavaScript判断上传文件后缀名

    <script type = text/javascript> function jiance(filename) { var pic = ["jpg","p ...

  2. 浅析Go语言的Interface机制

    前几日一朋友在学GO,问了我一些interface机制的问题.试着解释发现自己也不是太清楚,所以今天下午特意查了资料和阅读GO的源码(基于go1.4),整理出了此文.如果有错误的地方还望指正. GO语 ...

  3. [数据库基础]——图解JOIN

    阅读导航 一.概要 二.JOIN分类 三.JOIN分类详解 一.概要 JOIN对于接触过数据库的人,这个词都不陌生,而且很多人很清楚各种JOIN,还有很多人对这个理解也不是很透彻,这次就说说JOIN操 ...

  4. egret GUI 和 egret Wing 是我看到h5 最渣的设计

    一个抄袭FlexLite抄的连自己思想都没有,别人精髓都不懂的垃圾框架.也不学学MornUI,好歹有点自己想法. 先来个最小可用集合吧: 1. egret create legogame --type ...

  5. C# 委托Delegate(一) 基础介绍&用法

    本文是根据书本&网络 前人总结的. 1. 前言 定义&介绍: 委托Delegate是一个类,定义了方法的类型, 使得可以将方法当做另一个方法的参数来进行传递,这种将方法动态地赋给参数的 ...

  6. struts debug 标签

    < s:debug> 引起下面的错误 org.apache.jasper.JasperException: Caught an exception while getting the pr ...

  7. 配置hibernate,Struts。文件

    hibernate文件配置 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernat ...

  8. ios 音视频实现边播边缓存的思路和解决方案 (转)

    本片为转载内容,主要是以后自己看起来方便一些 原文地址:iOS音视频实现边下载边播放 其实音视频本地缓存的思想都差不多,都需要一个中间对象来连接播放器和服务器. 近段时间制作视频播放社区的功能,期间查 ...

  9. heart

    好久没写博客了,不想废话,直接欣赏效果! 点击这里,查看完美效果! 附完整代码: <!doctype html> <html> <head> <meta ch ...

  10. 基于HTML5的WebGL应用内存泄露分析

    上篇(http://www.hightopo.com/blog/194.html)我们通过定制了CPU和内存展示界面,体验了HT for Web通过定义矢量实现图形绘制与业务数据的代码解耦及绑定联动, ...