一  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. 三角形-css

    /*箭头向上*/ .arrow-up { width:; height:; border-left:30px solid transparent; border-right:30px solid tr ...

  2. keep the bar green to keep the code clean——Junit详解(一)

    测试用例 单元测试时每个开发人员必需掌握的,是保证开发过程中代码的准确性,无误性,保证代码质量.敏捷开发模式是先根据用户需求写测试用例,考虑基本所有用户所需要的情况,再写实现方法.单元测试有很多种,当 ...

  3. 场景4 Data Warehouse Management 数据仓库

    场景4 Data Warehouse Management 数据仓库 parallel 4 100% —> 必须获得指定的4个并行度,如果获得的进程个数小于设置的并行度个数,则操作失败 para ...

  4. 50个C/C++源代码网站

    C/C++是最主要的编程语言.这里列出了50名优秀网站和网页清单,这些网站提供c/c++源代码 .这份清单提供了源代码的链接以及它们的小说明.我已尽力包括最佳的C/C++源代码的网站.这不是一个完整的 ...

  5. eap-tls

    eap-tls       文件路径 用途 示例 备注 #gedit /usr/local/etc/raddb/sites-available/default #gedit /usr/local/et ...

  6. C# 里的if/switch

    今天又重新翻了翻C# Step by Step if 语句 if(bool 表达式) { 语句块: } else { 语句块: } switch(day) { case 0: dayName=&quo ...

  7. 《java异常的一些总结》

    关于Java中异常的一些总结: 3 有些时候,程序在try块里打开了一些物理资源(例如数据库连接,网络连接. 4 和磁盘文件等),这些物理资源都必须显示回收. 5 6 注意:Java的垃圾回收机制不会 ...

  8. cocos2d-x创建项目

    2.0之后的创建项目方法 第一步,首先 cd cocos2d-x-2.2.1/tools/project-creator/ 第二步, ./create_project.py -project Hell ...

  9. java EE中使用PO和VO的注意事项

    1.基本定义  PO(Persistence Object 持久化对象)是直接跟持久层数据库打交道的java Bean (model,entity,bean等叫法都是可以的),里面除了私有的成员变量之 ...

  10. PYTHON 链接 Oracle

    一.  cx_Oracle Python 连接Oracle 数据库,需要使用cx_Oracle 包. 该包的下载地址:http://cx-Oracle.sourceforge.net/ 下载的时候,注 ...