CoreData归纳使用
1.CoreData简介
2.CoreData数据模型
3.CoreData的主要对象
4.使用CoreData实现数据存储
一.CoreData简介
CoreData用做数据持久化,是数据持久化的最佳方式,CoreData能合理管理内存,避免使用sql的麻烦,高效,适用于大批量数据存储和查询。
CoreData不是数据库,最终存储形式可以是SQLite数据库,xml,二进制,内存,或自定义数据类型等方式来存储数据。
CoreData提供对象-关系映射的功能,使用面向对象的方式操作数据,即能够将OC对象转化成数据,保存在SQLite数据库中,也能将保存在数据库中的数据还原成OC对象。
二.CoreData数据模型
1.创建数据库模型
2.添加数据库实体
3.添加实体的属性
4.建立实体的关联关系
三.CoreData的相关类
1.NSManagedObjectContext:管理数据上下文,负责应用和数据库之间的交互,负责操作实际内容,主要作用为:插入数据,查询数据,删除数据。 当从数据持久层获取数据时,相当于把这些数据拷贝在便筏簿上,然后就可以随性所欲的修改这些值。通过上下文,可以对数据jil。
2.NSPresistentStoreCoordinator:持久化数据助理,相当于数据库的链接器,是物理数据存储空间存储的物理文件和程序之间的桥梁,负责管理不同对象的上下文。
3.NSEntityDescription:数据实体的描述,相当于数据库的一个表,描述实体间的关系,包括以下几个内容:①实体名称(name) ②实体类名NSManagedObject子类的名称 ③实体实例NSManagedObject对象或其子类的实例
4.NSManagedObjectModel:是被管理的数据对象模型,对应我们自行定义的模型文件,用来加载数据模型文件。包含了各实体的定义信息,主要作用为:用来描述程序中的实体,实体属性,实体间的关系。
5.CoreData核心类的依赖关系
6.总结
①引入CoreData框架 ②创建数据模型文件 .xcdatamodel ③初始化NSManagedObjectModel对象,加载模型文件,读取app中所有实体信息。 ④初始化NSPersistentStoreCoordinator对象,添加持久化库 ⑤初始化NSManagedObjectContext对象,拿到上下文对象操作实体。
四.示例代码
1.加载数据模型
2.创建持久化数据助理
3.数据持久化存储
4.初始化数据操作的上下文
5.NSManagedObjectContext的主要方法
-save:将数据对象保存到数据文件 -deleteObject:将一个数据对象标记为删除,但是要等到context提交更改后才真正删除数据对象 -undo:回滚最后一步操作 -rollback:还原数据文件内容 -reset:清楚缓存的ManagedObject 。只应当在添加或删除persistent Stores使用 -executeFetchRequest:error:执行Fetch request并返回所有的匹配的数据对象
6.添加数据
7.查询数据
8.删除数据
五.创建模型子类
默认情况下,利用CoreData取出的实体都是NSManagedObject类型,能够利用键值对来存取数据。但是一般情况下,实体在存取数据的基础上,有时还需要添加一些业务方法来完成一些其他任务,那么久需要创建NSManagedObject的子类。
1.创建模型子类
2.选择模型文件
3.选择需要创建子类的实体
CoreData归纳使用的更多相关文章
- iOS基本数据库存储方式 - CoreData
CoreData 创建模型文件的过程 1.选择模板 2.添加实体 3.添加实体的属性[注意]属性的首字母必须小写 一.CoreData管理类(必备以下三个类对象) 1.CoreData数据操作的上下文 ...
- AndroidProjects个人项目归纳
AndroidProjects 个人总结归纳-目录大纲 Data Binding框架MVVM BaseView CollapseView 更新中... 项目地址:https://github.com/ ...
- iOS CoreData 中 objectID 的不变性
关于 CoreData的 objectID 官方文档有这样的表述:新建的Object还没保存到持久化存储上,那么它的objectID是临时id,而保存之后,就是持久化的id,不会再变化了. 那么,我想 ...
- CoreData __ 基本原理
操作过程 Context想要获取值,先要告诉连接器,我要什么东西 链接器再告诉store, 你给我什么东西, store去找 找到之后返回给链接器,链接器再返回给Context Co ...
- iOS CoreData primitive accessor
Given an entity with an attribute firstName, Core Data automatically generates firstName, setFirstNa ...
- 初识CoreData与详解
Core Data数据持久化是对SQLite的一个升级,它是iOS集成的,在说Core Data之前,我们先说说在CoreData中使用的几个类. (1)NSManagedObjectModel(被管 ...
- CoreData教程
网上关于CoreData的教程能搜到不少,但很多都是点到即止,真正实用的部分都没有讲到,而基本不需要的地方又讲了太多,所以我打算根据我的使用情况写这么一篇实用教程.内容将包括:创建entity.创建r ...
- CoreData和SQLite多线程访问时的线程安全
关于CoreData和SQLite多线程访问时的线程安全问题 数据库读取操作一般都是多线程访问的.在对数据进行读取时,我们要保证其当前状态不能被修改,即读取时加锁,否则就会出现数据错误混乱.IOS中常 ...
- IOS数据存储之CoreData使用优缺点
前言: 学习了Sqlite数据之后认真思考了一下,对于已经习惯使用orm数据库的开发者或者对sql语句小白的开发者来说该如何做好数据库开发呢?这个上网搜了一下?看来总李多虑了!apple 提供了一种数 ...
随机推荐
- 201521123084 《Java程序设计》第4周学习总结
第4周作业-面向对象设计与继承 1. 本周学习总结 1.1 尝试使用思维导图总结有关继承的知识点. 1.2 使用常规方法总结其他上课内容. 总结: (1)学会了如何给类和方法进行简单的注释: (2)学 ...
- 团队作业8——第二次项目冲刺(Beta阶段)--5.21 second day
团队作业8--第二次项目冲刺(Beta阶段)--5.21 second day Day two: 会议照片 项目进展 今天是beta冲刺的第二天,组长还在准备考试当中,我们继续做前端改进和后端安排,今 ...
- 201521123107 《Java程序设计》第8周学习总结
第7周作业-集合 1.本周学习总结 2.书面作业 1.List中指定元素的删除 题集jmu-Java-05-集合之4-1 1.1 实验总结 这次的函数题是编写convertStringToList和r ...
- 团队作业8----第二次项目冲刺(beta阶段)5.20
Day2--5.20 1.每日讨论 会议内容:1.新成员乔桦和周迪慢慢了解项目. 2.组内负责主要编程的益靖对代码进行了大概的说明. 3.对昨天的工作进行了几点总结. 4.组长对每个成员的任务完成了分 ...
- 201521123117 《Java程序设计》第8周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结集合与泛型相关内容. 2. 书面作业 1.List中指定元素的删除(题目4-1) 1.1 实验总结: 1.通过equals方法以及l ...
- 201521123003《Java程序设计》第6周学习总结
1. 本周学习总结 1.1 面向对象学习暂告一段落,请使用思维导图,以封装.继承.多态为核心概念画一张思维导图,对面向对象思想进行一个总结. 注1:关键词与内容不求多,但概念之间的联系要清晰,内容覆盖 ...
- [转载] sublime text 2 调试python时结果空白
之前用的时候都一切正常,今天突然就出现了这个问题.按ctrl+b执行的时候结果只有空白,查了很多文章都只提到了中文路径.系统路径等等,没有解决问题,直到看到了这篇文章:http://384444165 ...
- Java Build Path(Java 构建路径)
Java构建路径用于在编译Java项目时找到依赖的类,包括以下几项: 源码包 项目相关的 jar 包及类文件 项目引用的的类库 我们可以通过使用 Java 项目属性对话框中的 Java Build P ...
- PIC单片机状态寄存器中的C(进位/借位位标志)
查阅PIC单片机芯片手册,关于进位/借位位的说明为: C:进位/借位位. 1 = 结果的最高位发生了进位 0 = 结果的最高位未发生进位 同时有一条标注:借位的极性是相反的. 通过以上说明,可以将C的 ...
- 假设我的朋友账号分别是v{1,2,3,4,5},且这五人想要共享一个目录,因此应该加入同一个群组,假设这个群组为vbird,且这五个账号的密码均为password.那该如何建置这五个账号?
假设我的朋友账号分别是v{1,2,3,4,5},且这五人想要共享一个目录,因此应该加入同一个群组,假设这个群组为vbird,且这五个账号的密码均为password.那该如何建置这五个账号?#!/bin ...