一  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. 打造基于CentOS7的xfce最简工作环境

    参考这里:http://blog.csdn.net/smstong/article/details/44802989没成功. 又参考这里http://jensd.be/125/linux/rhel/i ...

  2. JS Math.max() 函数

    Math.max(a,b,...,x,y) -- 返回数个数字中较大的值 max是maximum的缩写,中文"最大量"的意思 max函数语法Math.max(a,b,...,x,y ...

  3. Dojo的subscribe和publish的简单使用

    问题描述: 假设在你的页面有一个对话框,对话框中包含FilteringSelect这样的需要store的控件,在打开对话框时需要对这个控件做两件事情,一是给该控件的store填充数据,二是要给该控件设 ...

  4. 存到cookie里能提高性能吗?

    今天刚刚看了篇微信,大体意思是说g哥之类的网站把很多存session的东西都放cookie里了,可减少服务器的负担种种.然后我就发现我对request到application的记忆有些模糊了,哪些是在 ...

  5. Java 单列模式(Singleton)

    单例模式(Singleton) 定义:保证一个类仅有一个实例,并提供一个访问它的全局访问点. 目的:使得类的一个对象成为系统中的唯一实例. 如何保证一个类只有一个实例并且这个实例易于被访问呢? 我们都 ...

  6. ArcMap常用VBA

    --点坐标X VBA部分: Dim pGeo As IGeometry Set pGeo = [Shape] Dim pPoint As IPoint Set pPoint = pGeo 赋值部分: ...

  7. query语句的拼接.

    在外网服务器上的网页,不能排序了,原因是query语句拼接时,sort没有能拼上,. 小小的思路: 1.是不是网页请求出了问题: 和我本机上的的请求一一对比,并没有发现什么问题. 2.代码除了问题吗: ...

  8. okHttp使用

    本文转载自:http://www.cnblogs.com/qifengshi/p/5405550.html okHttp是一个http请求框架,相当于android原生的httpclient和http ...

  9. tomcat中catalina是什么(转)

    转自http://blog.sina.com.cn/s/blog_700aa8830101kgbk.html 谢谢博主的总结 catalina 就是Tomcat服务器使用的 Apache实现的serv ...

  10. BackTrack5-r3改源

    默认源服务器是国外的,更新起来会很慢,所以要改成国内的. 所需要的文件包地址:http://pan.baidu.com/s/1i3ouc9v(64位更新包)进入BT系统图形模式-将(语言选择器)文件拖 ...