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归纳使用的更多相关文章

  1. iOS基本数据库存储方式 - CoreData

    CoreData 创建模型文件的过程 1.选择模板 2.添加实体 3.添加实体的属性[注意]属性的首字母必须小写 一.CoreData管理类(必备以下三个类对象) 1.CoreData数据操作的上下文 ...

  2. AndroidProjects个人项目归纳

    AndroidProjects 个人总结归纳-目录大纲 Data Binding框架MVVM BaseView CollapseView 更新中... 项目地址:https://github.com/ ...

  3. iOS CoreData 中 objectID 的不变性

    关于 CoreData的 objectID 官方文档有这样的表述:新建的Object还没保存到持久化存储上,那么它的objectID是临时id,而保存之后,就是持久化的id,不会再变化了. 那么,我想 ...

  4. CoreData __ 基本原理

    操作过程 Context想要获取值,先要告诉连接器,我要什么东西 链接器再告诉store, 你给我什么东西, store去找 找到之后返回给链接器,链接器再返回给Context          Co ...

  5. iOS CoreData primitive accessor

    Given an entity with an attribute firstName, Core Data automatically generates firstName, setFirstNa ...

  6. 初识CoreData与详解

    Core Data数据持久化是对SQLite的一个升级,它是iOS集成的,在说Core Data之前,我们先说说在CoreData中使用的几个类. (1)NSManagedObjectModel(被管 ...

  7. CoreData教程

    网上关于CoreData的教程能搜到不少,但很多都是点到即止,真正实用的部分都没有讲到,而基本不需要的地方又讲了太多,所以我打算根据我的使用情况写这么一篇实用教程.内容将包括:创建entity.创建r ...

  8. CoreData和SQLite多线程访问时的线程安全

    关于CoreData和SQLite多线程访问时的线程安全问题 数据库读取操作一般都是多线程访问的.在对数据进行读取时,我们要保证其当前状态不能被修改,即读取时加锁,否则就会出现数据错误混乱.IOS中常 ...

  9. IOS数据存储之CoreData使用优缺点

    前言: 学习了Sqlite数据之后认真思考了一下,对于已经习惯使用orm数据库的开发者或者对sql语句小白的开发者来说该如何做好数据库开发呢?这个上网搜了一下?看来总李多虑了!apple 提供了一种数 ...

随机推荐

  1. 201521123084 《Java程序设计》第4周学习总结

    第4周作业-面向对象设计与继承 1. 本周学习总结 1.1 尝试使用思维导图总结有关继承的知识点. 1.2 使用常规方法总结其他上课内容. 总结: (1)学会了如何给类和方法进行简单的注释: (2)学 ...

  2. 团队作业8——第二次项目冲刺(Beta阶段)--5.21 second day

    团队作业8--第二次项目冲刺(Beta阶段)--5.21 second day Day two: 会议照片 项目进展 今天是beta冲刺的第二天,组长还在准备考试当中,我们继续做前端改进和后端安排,今 ...

  3. 201521123107 《Java程序设计》第8周学习总结

    第7周作业-集合 1.本周学习总结 2.书面作业 1.List中指定元素的删除 题集jmu-Java-05-集合之4-1 1.1 实验总结 这次的函数题是编写convertStringToList和r ...

  4. 团队作业8----第二次项目冲刺(beta阶段)5.20

    Day2--5.20 1.每日讨论 会议内容:1.新成员乔桦和周迪慢慢了解项目. 2.组内负责主要编程的益靖对代码进行了大概的说明. 3.对昨天的工作进行了几点总结. 4.组长对每个成员的任务完成了分 ...

  5. 201521123117 《Java程序设计》第8周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结集合与泛型相关内容. 2. 书面作业 1.List中指定元素的删除(题目4-1) 1.1 实验总结: 1.通过equals方法以及l ...

  6. 201521123003《Java程序设计》第6周学习总结

    1. 本周学习总结 1.1 面向对象学习暂告一段落,请使用思维导图,以封装.继承.多态为核心概念画一张思维导图,对面向对象思想进行一个总结. 注1:关键词与内容不求多,但概念之间的联系要清晰,内容覆盖 ...

  7. [转载] sublime text 2 调试python时结果空白

    之前用的时候都一切正常,今天突然就出现了这个问题.按ctrl+b执行的时候结果只有空白,查了很多文章都只提到了中文路径.系统路径等等,没有解决问题,直到看到了这篇文章:http://384444165 ...

  8. Java Build Path(Java 构建路径)

    Java构建路径用于在编译Java项目时找到依赖的类,包括以下几项: 源码包 项目相关的 jar 包及类文件 项目引用的的类库 我们可以通过使用 Java 项目属性对话框中的 Java Build P ...

  9. PIC单片机状态寄存器中的C(进位/借位位标志)

    查阅PIC单片机芯片手册,关于进位/借位位的说明为: C:进位/借位位. 1 = 结果的最高位发生了进位 0 = 结果的最高位未发生进位 同时有一条标注:借位的极性是相反的. 通过以上说明,可以将C的 ...

  10. 假设我的朋友账号分别是v{1,2,3,4,5},且这五人想要共享一个目录,因此应该加入同一个群组,假设这个群组为vbird,且这五个账号的密码均为password.那该如何建置这五个账号?

    假设我的朋友账号分别是v{1,2,3,4,5},且这五人想要共享一个目录,因此应该加入同一个群组,假设这个群组为vbird,且这五个账号的密码均为password.那该如何建置这五个账号?#!/bin ...