一  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. Hibernate2

    计应134(实验班) 杨伟 Hibernate 中提供了两级Cache(高速缓冲存储器),第一级别的缓存是Session级别的缓存,它是属于事务范围的缓存.这一级别的缓存由hibernate管理的,一 ...

  2. CentOS6.6 kickstart文件

    # Kickstart file automatically generated by anaconda. #version=DEVELinstall#cdromurl --url http://19 ...

  3. I/O Directory类

    Directory类 Directory类位于System.IO 命名空间.Directory类提供了在目录和子目录中进行创建移动和列举操作的静态方法.此外,你还可以访问和操作各种各样的目录属性. 1 ...

  4. Easy51RTOS入门级初略分析

    main.c #include "reg51.h" #include "os_cfg.h" #define TASK_DELAY0 TIME_PER_SEC/1 ...

  5. 浅谈Extjs radiogroup change事件与items下的checked属性

    在使用Extjs制作crud时,由于添加和修改界面的高度相似,使用了相同的row字段. 在角色字段中使用了change监听事件,用于动态的无效化权限分配字段,因为权限分配界面默认没有隐藏,设定了che ...

  6. seleniu+python+chrome的调试

    1.下载chrome,下载chrome driver,下载地址:http://code.google.com/p/chromedriver/downloads/list 2.安装chrome,默认路径 ...

  7. 【转】Linux Top 命令解析 比较详细

    TOP命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况.   TOP是一个动态显示过程,即可以通过用户按键来不断刷新当前状态.如果在前台执行该命令,它将独占前台,直到用户 ...

  8. Parse xml/json[xpath/jpath]

    import groovy.util.XmlSlurper import groovy.util.XmlParser import com.eviware.soapui.support.GroovyU ...

  9. JAVA编程讲座-吴老

    JAVA系列公开课第4讲:多态系列课程:从JAVA编程零基础讲起,同时结合工作中遇到的具体实例,语言清晰易懂,连续10周+深入讲解,打下编程基础,让我们一起打来自动化测试的大门时间:4月25日(周一) ...

  10. EasyUI加载树控件自动展开所有目录

    在这里如何加载树控件就不在熬述,在加载树控件后,树的节点全部展开,要在OnLoadSuccess事件中写代码: