一  CoreData 了解
1 CoreData 数据持久化框架是 Cocoa API 的一部分,首先在iOSS5 版本的系统中出现;
     它允许按照 实体-属性-值 模式组织数据;
     并以 XML 、 二进制文件、内存、自定义数据类型或者 SQLite 数据文件的格式持久化数据
2 CoreData 主要提供对象-关系映射(ORM)功能,把OC对象转化为数据保存到文件,也可以数据转化为OC对象
3 原理 : 是对 SQLite 的封装,开发者不需要接触SQL 语句,就可以对数据库进行的操作
4 CoreData 优势
/**   CoreData 概念
 1 是一种数据持久化框架,用来解决对象生命周期管理,对象关系图管理、和持久化等方面相关问题的,负责在数据库中存储数据。底层也是类似于SQLite 的技术实现。
 **   CoreData 优点
 1 可视化、不用再写SQL语句,大量简化代码, redo/undo 
 2 可以实现多种文件格式:NSSQLiteStoreType,NSXMLStoreType等。
 3 与iOS 紧密结合,只能用于开发iOS
 4 存储内容,以对象的形式存储,符合面向对象的思想
 **   SQLite 特点
 1 是一个轻量级数据库而且功能强大的关系型数据库,很容易被嵌入到应用中,可移植性高,可以在多个品台使用
 2 和CoreData 框架不一样的是,sqlite 是使用程序式的,sql的主要操作方法,是直接操作数据表。
 3 基于C语言接口,使用sql 语句。代码繁琐。
 4 在处理大量数据时,表关系更直观一些。
 5 OC 中不是可视化的
 */
 
 
二    CoreData 数据库框架的核心对象
1 NSManagedObjectModel (数据模型器类)
  包含了各个实体(表)的定义信息,包含了表或者数据库的结构
   作用:用来添加实体的属性,建立属性之间的关系
   操作方法:视图编辑器,也可以用代码
   意义:构建整个数据库的表结构、表字段类型、表与表之间的关系等等,凡是和数据结构有关系的定义,统统都通过这个类进行管理。(被管理对象模型,管理多个对象)
 
 
2 NSPersistentStoreCoordinator  (数据连接器类)
     相当于数据库的连接器
      作用:设置数据存储的名字、位置、存储方式、存储时机
      原理:从下层文件取出数据,交给上层的被管理对象上下文
      意义:实际上这个类才是正真意义上跟数据库打交道的,主要根据 NSManagedObjectModel 执行表结果的建立,通过 NSManagedObjectContext 的命令执行数据交互。
 
 
 
3 NSManagedObjectContext (数据管理器类)
      操作实际内容(对持久层的一个操作)
   作用:插入数据、查询数据、删除数据、修改数据
   意义:是我们开发中主要交互的类,数据的CRUD 都通过这个 Context(上下文)去触发命令并返回结果。executeFetchRequest 操作(返回值是数组)CoreData提供的是对象关系映射,NSManagedObjectContext 操作的都是 NSManagedObject对象
 
 
4 NSPersistentStore:
作用:持久化存储,是对实际文件的一种Objective-C表示方式,一个被封装好的底层类,用于存储数据
存储文件 : 用来存储和管理数据的文件,iOS 支持4中存储类
NSSQLiteStoreType、NSBinaryStoreType、NSInMemoryStoreType、NSXMLStoreType
 
5 NSManagedObject:
被管理对象,CoreData 返回的数据模型,被管理的对象是根据实体描述生成的
 
6 NSEntityDescription:
实体描述类,根据实体创建被管理对象
 
7 Entity:
实体类,实体是对文件数据的描述。被管理对象表示实体,实体包含名称,属性(字段)和关系,实体的名称通常和被管理对象名一致
 
8 NSFetchRequest:
查询请求,可以做排序操作,也可以使用谓词
NSManagedObjectContext  根据 NSFetchRequest 查询数据,以数组的形式返回,数组中包含被管理对象 (NSManagedObject)
 
 
9 NSSortDescription  : 排序操作
 
10 后缀为 (.xcdatamodeleld) 的包
里面是 .xcdatamodeleld 文件 ,用数据模型编辑器编辑 编译后为 .momd 或 .mom文件
 
11 依赖关系
NSFetchRequest- NSEntityDescription、NSManagedObjectContext 
NSManagedObject- NSEntityDescription、NSManagedObjectContext 
 
NSManagedObjectContext -NSPersistentStoreCoordinator-NSManagedObjectModel、持久化数据存储类型、数据存储路径和名称
NSManagedObjectModel-(-.momd)-(.xcdatamodeleld)
持久化数据存储类型-NSSQLiteStoreType、NSBinaryStoreType、NSInMemoryStoreType、NSXMLStoreType
数据存储路径和名称- 数据库名称和路径
 
12 两个方法
//保存数据到持久层:把被管理的上下文所做的操作保存到实际的SQLite文件中
- (void)saveContext;
//应用程序沙盒下的Documents目录路径:获取Documents路径
- (NSURL *)applicationDocumentsDirectory;
  
 
 
三 CoreData 数据库的简单操作
1 创建模型文件
2 添加实体
3 创建实体类
4 生成上下文文件 关联模型文件生成数据库
5 保存对象到数据库
6 从数据库获取对象
7 更新数据
6 删除数据
 
 
 
 
 
 
 
 
 
 
 
 
 

CoreData数据库的更多相关文章

  1. iOS - CoreData 数据库存储

    1.CoreData 数据库 CoreData 是 iOS SDK 里的一个很强大的框架,允许程序员以面向对象的方式储存和管理数据.使用 CoreData 框架,程序员可以很轻松有效地通过面向对象的接 ...

  2. CoreData数据库迁移的操作

    CoreData数据库迁移操作步骤,操作是基于Xcode7. 1.添加新的数据库.选中当前数据库版本:Editor->Add Model Verson,创建一个新的数据库版本. 2.Comman ...

  3. iOS coredata 数据库升级 时报Can't find model for source store

    在coredata 数据库结构被更改后,没根据要求立即建立新version,而是在原version上进行了小修改,之后才想起来建立新版本.并通过以下代码合并数据库, NSError *error = ...

  4. 【原】iOS学习之SQLite和CoreData数据库的比较

    1. SQLite数据库 sqlite数据库操作的基本流程是, 创建数据库, 再通过定义一些字段来定义表格结构, 可以利用sql语句向表格中插入记录, 删除记录, 修改记录, 表格之间也可以建立联系. ...

  5. CoreData数据库升级

    如果IOS App 使用到CoreData,并且在上一个版本上有数据库更新(新增表.字段等操作),那在覆盖安装程序时就要进行CoreData数据库的迁移,具体操作如下: 1.选中你的mydata.xc ...

  6. iOS:CoreData数据库的使用四(数据库和UITableViewController以及NSFetchedResultsController一起使用)

    CoreData数据库虽然可以和tableview或者UITableViewController一起使用将数据显示在表格上,但是在准备数据的时候,这种方式需要用一个可变数组来装从数据库一次性取出来的所 ...

  7. iOS:CoreData数据库的使用三(数据库和tableView表格一起使用)

    CoreData数据库是用来持久性存储数据的,那么,我们再从该数据库中取出数据干什么呢?明显的是为了对数据做操作,这个过程中可以将它们直观的显示出来,即通过表格的形式显示出来.CoreData配合ta ...

  8. iOS:CoreData数据库的使用二(创建多个数据库表,表之间有对应关系)

    CoreData数据库框架是一个封装性好,功能强大数据库,它底层使用的还是sqlite数据库,不过苹果公司在其基础上,为其封装新和安全性的维护上做了大量的处理,例如对一些事物做了详细的操作,如读脏数据 ...

  9. iOS:CoreData数据库的使用一(创建单个数据库表)

    CoreData数据库框架:mac系统自带的数据库,它是苹果公司对sqlite进行封装而来的,既提供了对数据库的主要操作,也提供了具体的视图关系模型. 需要用到三个对象: 1•Managed Obje ...

随机推荐

  1. Git-rebase 小笔记

    转自: https://blog.yorkxin.org/posts/2011/07/29/git-rebase/ 最近刚好有个机会整理很乱的Git commit tree,终于搞懂了rebase 的 ...

  2. JSP基础语法

    JSP页面元素构成: 指令: page指令: ISO-8859-1 是纯英文的字符集,UTF-8 是中文字符集,将pageEncoding =ISO-8859-1 改为 contentType=utf ...

  3. 6、Concurrent-Mark-Sweep

    1.cms 主要用于年老代垃圾回收 2.这玩意牺牲通吐量换取最短垃圾回收时间 3.有的地方说是四个阶段,有的地方说五个阶段,还有六个阶段的,真相是----我也不知道 四个阶段: Initial mar ...

  4. Making the Newsfeed web part available outside of My Sites in SharePoint 2013 分类: Sharepoint 2015-07-07 19:29 4人阅读 评论(0) 收藏

    The Newsfeed is a key piece in SP2013's approach to social computing. It appears on the landing page ...

  5. excel 转换日期

    早上一朋友问我excel中如何将类似这样“19850421”的文本日期转换为“1985-04-21”.我的第一反应就是直接设置单元格格式为日期,于是打开excel试了试结果显示“########### ...

  6. 安全协议系列(五)---- IKE 与 IPSec(上)

    IKE/IPSec 属于网络层安全协议,保护 IP 及上层的协议安全.自上个世纪末面世以来,关于这两个协议的研究.应用,已经非常成熟.协议本身,也在不断地进化.仅以 IKE 为例,其对应的 RFC 编 ...

  7. Beta版

    Beta版使用说明 各文件介绍:本软件是基于visual studio 2010 平台,使用C#语言开发的windows窗体游戏.该游戏共有七个界面,分别是开始界面,游戏说明界面,模式选择界面,经典模 ...

  8. 安装生物信息学软件-HUMAnN2

    先挖坑 因为这个软件需要memory>16G,所以应该要安装在服务器上

  9. 题目1203:IP地址

    题目: http://ac.jobdu.com/problem.php?pid=1203 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:3052 解决:1504 题目描述: 输入一个ip地 ...

  10. What is the ViewPort ? Why we need it .

    See also : http://stackoverflow.com/questions/14775195/is-the-viewport-meta-tag-really-necessary htt ...