coredata

iOS数据存储

一笑奈何 提交于 2020-03-18 05:06:53
【reference】http://www.infoq.com/cn/articles/data-storage-in-ios 谈到数据储存,首先要明确区分两个概念,数据结构和储存方式。所谓数据结构就是数据存在的形式。除了基本的NSDictionary、NSArray和NSSet这些对象,还有更复杂的如:关系模型、对象图和属性列表多种结构。而存储方式则简单的分为两种:内存与闪存。内存存储是临时的,运行时有效的,但效率高,而闪存则是一种持久化存储,但产生I/O消耗,效率相对低。把内存数据转移到闪存中进行持久化的操作称成为归档。 二者结合起来才是完整的数据存储方案,我们最常谈起的那些:SQLite、CoreData、NSUserDefaults等都是数据存储方案。当然在这些框架提供的方案之外,我们自己也可以按照个性化需求订制方案。这些存储方案侧重不同,支持的形式和方式也各不相同,在不同的使用场景下表现也是各有优劣。但万变不离其宗,无论什么方案都可以用下图来解释。 图1,存储方案示意图 以下将对四种存储方式进行详细的介绍: NSUserDefaults,用于存储配置信息 SQLite,用于存储查询需求较多的数据 CoreData,用于规划应用中的对象 使用基本对象类型定制的个性化缓存方案 用NSUserDefaults存储配置信息

ios中的coredata的使用

白昼怎懂夜的黑 提交于 2020-03-11 08:20:46
Core Data数据持久化是对SQLite的一个升级,它是ios集成的,在说Core Data之前,我们先说说在CoreData中使用的几个类。 (1)NSManagedObjectModel(被管理的对象模型) 相当于实体,不过它包含 了实体间的关系 (2)NSManagedObjectContext(被管理的对象上下文) 操作实际内容 作用:插入数据 查询 更新 删除 (3)NSPersistentStoreCoordinator(持久化存储助理) 相当于数据库的连接器 (4)NSFetchRequest(获取数据的请求) 相当于查询语句 (5)NSPredicate(相当于查询条件) (6)NSEntityDescription(实体结构) (7)后缀名为.xcdatamodel的包 里面的.xcdatamodel文件,用数据模型编辑器编辑 编译后为.momd或.mom文件,这就是为什么文件中没有这个东西,而我们的程序中用到这个东西而不会报错的原因 首先我们要建立模型对象 其次我们要生成模型对象的实体User,它是继承NSManagedObjectModel的 点击之后你会发现它会自动的生成User,现在主要说一下,生成的User对象是这种形式的 这里解释一下dynamic 平常我们接触的是synthesize dynamic和synthesize有什么区别呢

CoreData Z_PK

空扰寡人 提交于 2020-03-09 09:18:09
并非严格的说, CoreData 是对sqlite数据库的一个封装. sqlite数据库操作的基本流程是, 创建数据库, 再通过定义一些字段来定义表格结构, 可以利用sql语句向表格中插入记录, 删除记录, 修改记录, 表格之间也可以建立联系. 这个过程出现了, 表格的结构(schema), 所有表格的结构和相互联系构成整个数据库的模型, 数据库存放的方式(可以是文件或者在内存), 数据库操作, sql语句(主要是查询), 表格里面的记录 下面将上面说的文字, 跟 CoreData 的类作个对应: 表格结构 --> NSEntityDescription 数据库中所有表格和他们的联系 -->NSManagedObjectModel 数据库存放方式 --> NSPersistentStoreCoordinator 数据库操作 --> NSManagedObjectContext 查询语句 --> NSFetchRequest 表格的记录 --> NSManagedObject 可能上面的对应关系并非十分严格, 但确实可以帮助理解. 下面再看看 CoreData 的类 NSEntityDescription NSManagedObjectModel NSEntityDescription用来定义表格结构,

CoreData Z_PK

浪尽此生 提交于 2020-03-09 08:15:46
并非严格的说, CoreData 是对sqlite数据库的一个封装. sqlite数据库操作的基本流程是, 创建数据库, 再通过定义一些字段来定义表格结构, 可以利用sql语句向表格中插入记录, 删除记录, 修改记录, 表格之间也可以建立联系. 这个过程出现了, 表格的结构(schema), 所有表格的结构和相互联系构成整个数据库的模型, 数据库存放的方式(可以是文件或者在内存), 数据库操作, sql语句(主要是查询), 表格里面的记录 下面将上面说的文字, 跟 CoreData 的类作个对应: 表格结构 --> NSEntityDescription 数据库中所有表格和他们的联系 -->NSManagedObjectModel 数据库存放方式 --> NSPersistentStoreCoordinator 数据库操作 --> NSManagedObjectContext 查询语句 --> NSFetchRequest 表格的记录 --> NSManagedObject 可能上面的对应关系并非十分严格, 但确实可以帮助理解. 下面再看看 CoreData 的类 NSEntityDescription NSManagedObjectModel NSEntityDescription用来定义表格结构,

CoreData 框架的简单解释

六月ゝ 毕业季﹏ 提交于 2020-03-09 08:00:03
并非严格的说, CoreData是对sqlite数据库的一个封装. sqlite数据库操作的基本流程是, 创建数据库, 再通过定义一些字段来定义表格结构, 可以利用sql语句向表格中插入记录, 删除记录, 修改记录, 表格之间也可以建立联系. 这个过程出现了, 表格的结构(schema), 所有表格的结构和相互联系构成整个数据库的模型, 数据库存放的方式(可以是文件或者在内存), 数据库操作, sql语句(主要是查询), 表格里面的记录 下面将上面说的文字, 跟CoreData的类作个对应: 表格结构 --> NSEntityDescription 数据库中所有表格和他们的联系 -->NSManagedObjectModel 数据库存放方式 --> NSPersistentStoreCoordinator 数据库操作 --> NSManagedObjectContext 查询语句 --> NSFetchRequest 表格的记录 --> NSManagedObject 可能上面的对应关系并非十分严格, 但确实可以帮助理解. 下面再看看CoreData的类 NSEntityDescription NSManagedObjectModel NSEntityDescription 用来定义表格结构, 所以你就可以理解NSManagedObjectModel中的setEntities:

iOS学习37数据处理之CoreData

自古美人都是妖i 提交于 2020-03-09 07:56:47
1. SQLite数据库 sqlite数据库操作的基本流程是, 创建数据库, 再通过定义一些字段来定义表格结构, 可以利用sql语句向表格中插入记录, 删除记录, 修改记录, 表格之间也可以建立联系。 这些操作都需要使用SQL语句去实现,感觉操作很直接。如果先前有一点数据库和SQL基础的话,写起来会感觉很亲切,都是一些数据库操作的语句。但是当操作变多之后,语句越来越多,就很烦,代码比较多,看起来也会混乱一些。 如果想要详细了解,可以看 iOS学习36数据处理之SQLite数据库 2. CoreData数据库 CoreData.framework :iOS中提供了对原始SQLite数据库API访问的封装,通过这个framework来管理数据缓存和持久数据要比使用SQL语句操作SQLite数据库简单和方便许多。 机制:通过framework来存储和查询数据只需要使用framework提供的类就可以,你可以完全使用对象的形式来管理你的数据以及数据之间的关系,framework已经很好地将数据库表和字段封装成了对象和属性,表之间的一对多、多对多关系则封装成了对象之间的包含关系. 通过 relationship 来表示:   一对多时:设置为 properties 项选中 Optional, Plural 选项 To-Many Relationship 选中;   多对一反向关系时

core data浅析

会有一股神秘感。 提交于 2020-03-06 14:06:06
Core data 浅析 类似于之前使用过的 FMDB ,是苹果自带的,管理数据库的工具。 使用原因: 它能让你为 model 层写的代码更简洁,无需优化,无需测试。 Core data 能利用 model 层的信息和运行时的特性,而不是通过过程层的代码实现的。 除了能提供强大的安全支持和错误处理外,它还提供了最优的内存扩展性,可实现有竞争力的解决方案。 主要是 iOS 对 sqlite 数据库的封装。 有对象一一关系的映射功能,能把 oc 的对象存储成数据库或 xml 等。 读取时不需要使用 sql 语句。 误解: 不是关系型数据库,也不是关系型数据库管理系统( RDBMS ), core data 为数据变更管理,对象存储,对象读取恢复功能提供了支持。它可以使用 sqlite 做为持久化存储的类型、它本身不是一个数据库。 代码步骤: 1. 导入库 <core data.framework> 和 <core data/core data.h > 2. 这样托管对象模型知道所有当前工程中用到的托管对象的定义,创建一个 NSmanaged ObjectModel 数据模型文件 1> 创建数据模型文件 ->new file ->core data -> 选中 data model ,创建文件( user.xcdatamodeld ) 2> 创建跟数据模型文件关联的数据模型类, new

iOS 网络请求Json自动转存到CoreData(一)

余生长醉 提交于 2020-03-06 14:05:51
奉上地址一枚: GitHub 并自带demo~ 项目需求:从网络获取Json后,将Json自动转存到CoreData中。 本次任务:对CoreData封装,完成基本的增删改查,多线程操作。 我们总是在跌跌撞撞中,不断成长。 CoreDataActivity.h // // CoreDataActivity.h // QGLCoreDataPlugin // // Created by Guicai.Li on 14-10-16. // Copyright (c) 2014年 Guicai Li. All rights reserved. // #import <Foundation/Foundation.h> #import "DEBUG.h" #import "NSFetchRequest+helper.h" #import "NSManagedObject+helper.h" #import "NSManagedObjectModel+helper.h" #import "NSPersistentStoreCoordinator+helper.h" @import CoreData; @interface CoreDataActivity : NSObject // Parent Context @property (strong, nonatomic)

CoreData 入门使用 增删改查 swift

寵の児 提交于 2020-03-06 13:57:24
首先新建一个 点击新建的testInfo.xcdatamodeld 会出现这么个界面 创建完testInfo.xcdatamodeld之后 AppDelegate 会自动帮你添加支持coredata的代码 有兴趣的自己研究 首先 使用coredata 存储数据 1.创建表 2.创建字段 3.创建对应字段的模型类 就足够了 创建表 点击 然后出现 添加字段 .................... 创建对应字段的模型 command+n 都勾上之后会自动帮你创建一个类 好 一切准备完毕. 找个地方测试一下 增删改查 就直接在 AppDelegate里写测试代码 好 以上就是简单的coredata使用 献给第一次用的新手. 本实例只试用于入门上手使用 来源: oschina 链接: https://my.oschina.net/u/2434596/blog/491182

CoreData的简单使用

时光怂恿深爱的人放手 提交于 2020-03-06 13:51:33
一.CoreData ####1.CoreData用于做数据持久化,适合大数据量的存储和查询; ####2.CoreData不是数据库,CoreData可以使用数据库,XML等方式来存储数据; ####3.SQLite通过SQL语句操作数据,CoreData使用面向对象的方式操作数据; ####4.使用CoreData操作数据,不需要写任何SQL语句; ####5.使用CoreData,需要导入CoreData框架 二.CoreData核心对象 ( https://static.oschina.net/uploads/img/201609/03185446_dVwX.png "CoreData核心对象的关系") NSManagedObject:模型对象,或者叫实体(entity),可理解为OC⾥里的对象。 NSManagedObjectModel:模型⽂文件(.xcdatamodeld),记录所有的模型对象及对象的属性. NSPersistentStoreCoordinator:持久化存储协调者,是数据库和程序之间的桥梁, ⽤用来设置数据存储的名字,位置,存储⽅方式,和存储时机。⽤用来执⾏行具体的CRUD操作。 NSManagedObjectContext:对象管理上下⽂文,⽤用户所有的持久化操作都是通过此 对象。再由此对象去调