iOS-Senior-数据处理之CoreData

1.CoreData数据库框架的优势

CoreData数据持久化框架是Cocoa API的一部分,首次在iOS5版本的系统中出现,它允许按照实体 - 属性 - 值 模型组织数据,并以XML,二进制文件或者SQLite数据文件的格式持久化数据。

CoreData主要提供对象 - 关系映射(ORM)功能,把oc对象转化为数据保存到文件,也可以数据转化为oc对象。

sqlite:

1.基于c接口,需要使用sql语句,代码繁琐

2.在处理大量数据时,表关系更直观

3.在oc中不是可视化的

CoreData:

1.可视化,有undo/redo能力

2.可以实现多种文件格式NSSQLiteStoreType,NSXMLStoreType

3.苹果官方API支持,与iOS结合更紧密

核心对象:

实体管理类:NSManagedObject

实体描述类:NSEntityDescription(菜单详情步骤)

作用:用来描述实体类

数据管理器类:NSManagedObjectContext(服务员小姐)

作用:负责应用和数据库之间的交互

数据连接器类:NSPersistentStoreCoordinator(厨师)

作用:添加持久化存储库

数据调节器类:NSPersistentStore(帮厨)

数据模型器类:NSManagedObjectModel(菜单)

作用:代表CoreData的模型文件

2.CoreData数据库框架的核心对象

持久化存储和存储文件:

NSPersistentStore:持久化存储,是对实际文件的一种Object-C表示方式,一个被封装好的底层类,用于存储数据。

存储文件:用来存储和管理数据的文件,iOS支持4种存储类型:NSSQiteStoreType,NSBinaryStoreType,NSInMemoryStoreType,NSXMLStoreType

NSManagedObjectContext:被管理对象上下文CoreData中用于操作和使用数据,负责应用和数据库之间的交互。

数据的保存需要NSMangedObjectContext进行save操作

数据的查询需要NSManagedObjectContext进行executeFetchRequest操作(返回值是数组)

CoreData提供的是对象关系映射,NSManagedObjectContext操作的都是NSManagedObject对象。

NSManagedObjectModel:被管理对象模型,管理多个对象

NSManagedObject:被管理对象,CoreData返回的数据模型,被管理的对象是根据实体描述生成的。

NSEntityDescription:实体描述类,根据实体创建被管理对象

Entity:实体类,实体是对文件数据的描述。被管理对象表示实体,实体包含名称,属性(字段)和关系,实体的名称通常和被管理对象名一致

NSFetchRequest:查询请求,可以做排序操作,也可以使用谓词

NSManagedObjectContext根据NSFetchRequest查询数据,以数组形式返回,数组中包含被管理对象(NSManagedObject)

NSSortDescriptor:排序操作

3.CoreData数据库的简单操作

1.创建实体类和属性

切换可视化关系图:

部分代码:

@interface ViewController ()

//声明一个managedObjectContext对象

@property(nonatomic,strong) NSManagedObjectContext *context;

@end

//初始化上下文,实现应用和数据库之间的数据交互

self.context = [ [NSManagedObjectContext alloc ] init];

//从应用程序当中加载模型文件

NSURL *modelURL = [[NSBundle mainBundle] URLForResource : @"Data" withExtension: @"momd"];

//(代表的就是刚刚创建的实体)

self.managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];

//创建连接器

//连接器对象关联的实体模型

................(以上等步骤文件里是提供现成的)...............................................

4.CoreData数据库表关联操作

 

5.使用CoreData数据库的迁移

CoreData支持随着App开发演进而带来的对象模型升级或修改的管理,模型的改变将导致不兼容(或不能打开)以前版本创建的存储。如果你要改变你的模型,你就必须要改变现有存储中的数据 - 即数据存格式(store format)----这被称为数据迁移(migration)

数据迁移的三个阶段:

1.创建基于源实例对象的目标实例对象;

2.重新建立联系

3.验证与保存

版本升级:

数据迁移过程中,CoreData创建了两个栈(stacks),一个用于源存储(source store),一个用于目标存储(destination store)。随后,CoreData从源栈中获取对象,对应的将其插入目标栈。

注意:在新栈中,诸多对象是CoreData重新创建(re-create)

总结:

1.CoreData数据库框架的实现核心是持久化存储栈

2.与CoreData数据库框架的所有交互都是通过NSManagedObjectContext完成的
3.NSManagedObjectContext中的数据是缓存在内存中的副本,要想达到持久化目的必须更新保存

时间: 2024-11-02 10:40:40

iOS-Senior-数据处理之CoreData的相关文章

iOS数据存储之CoreData

iOS中大量数据的储存一个是SqLite,另一个就是CoreData,CoreData允许程序员以面向对象的思维方式的方法去操作面向表的数据库 做过Java开发的对这个应该很熟悉,Java中的Hibernate跟CoreData就很相似 CoreData应该怎样使用呢? 第一步,新建工程后导入CoreData框架 第二部,创建CoreData的数据模型创建步骤如下 然后给你的model起个名字,创建完成后你会看到一个这个文件(相当于数据库文件) 点击这个文件,然后看下图 点击图中1,新建实体(类

(转)iOS XML JSON SQLite CoreData 数据持久化

一.文件操作 1.因为应用是在沙盒(Sandbox)中的,在文件读写权限上受到限制,只能在几个目录下读写文件: * Documents:应用中用户数据可以放在这里,iTunes备份和恢复的时候会包括此目录 * tmp:存放临时文件,iTunes不会备份和恢复此目录,此目录下文件可能会在应用退出后删除 * Library/Caches:存放缓存文件,iTunes不会备份此目录,此目录下的文件不会在应用退出删除 2.相关方法:       # 使用NSSearchPathForDiretoriesI

iOS数据库操作之coredata详细操作步骤

CHENYILONG Blog iOS数据库操作之coredata详细操作步骤 技术博客http://www.cnblogs.com/ChenYilong/ 新浪微博http://weibo.com/luohanchenyilong iOS应用数据存取的常用方式 ? XML属性列表 -- PList? NSKeyedArchiver 归档 ?Preference(偏好设置) ? SQLite3? Core DataCore Data简介 ? Core Data 是iOS SDK 里的一个很强大的

ios cordite 读取错误CoreData could not fulfill a fault for '0x15b4a870

解释在这里 http://stackoverflow.com/questions/14296892/nsobjectinaccessibleexception-reason-coredata-could-not-fulfill-a-fault 这里是中文的详细解释 http://blog.csdn.net/meegomeego/article/details/17654947 关于这个问题,我们涉及到2个函数: /* returns the object for the specified ID

数据处理之CoreData

一.CoreData数据库框架与Sqlite对比 Sqlite: 1.基于C接口, 需要使用sql语句, 代码繁琐 2.在处理大量数据时, 表关系更直观 3.在OC中不是可视化的 CoreData: 1. 可视化, 有undo/redo能力 2.可以实现多种文件格式NSSQLiteStoreType.NSBinaryStoreType.NSInMemoryStoreType.NSXMLStoreType 3.苹果官方API支持, 与iOS结合更紧密 二.CoreData核心对象 实体管理类:NS

iOSDay37数据处理之CoreData

1. CoreData数据库框架的优势 1> CoreData历史 CoreData数据持久化框架是Cocoa API 的一部分,首次在iOS5版本的系统中出现,它允许按照实体-属性-值模型组织数据,并以XML.二级制文件或者SQLite数据文件的格式持久化数据. CoreData主要提供对象 --- 关系映射(ORM)功能,把OC对象转化为数据保存到文件,也可以数据转化为OC对象. 2> CoreData数据库与Sqlite数据库的比较 Sqlite: 基于C接口,需要使用sql语句,但是代

iOS 持久化存储之CoreData VS 直接SQlite

原创Blog,转载请注明出处 blog.csdn.net/hello_hwc 欢迎关注我的iOS SDK详解专栏 http://blog.csdn.net/column/details/huangwenchen-ios-sdk.html 前言: CoreData不是DB,也不是DBMS,它是一个对象图管理工具,它的底层存储使用SQLite,XML或者其它.通常使用CoreData的时候,也会用到第三方库,比如MagicalRecord. SQLite则是一个DB,有自己的DB Engine,开发

iOS 开发系列:CoreData Object 变成 Fault 的一种方式

@quote: 近来一直与 CoreData 打交道,这是一个架构庞大.学习曲线比较陡峭的 iOS 组件,每次遇到问题都会对其有新的认识. 这次就只讲一点,关于错误认知 Object(NSManagedObject)与 Context (NSManagedContext)的引用关系而导致的 Fault 问题. 用过 CoreData 的都应该对其基本使用有个最直接的了解,那就是:Object 都是放在 Context 里的,同时 Object 也会有一个 「managedObjectContex

iOS 数据持久化之CoreData(二)堆栈建立和基本操作Demo

原创Blog,转载请注明出处 blog.csdn.net/hello_hwc 欢迎关注我的iOS SDK详解专栏 http://blog.csdn.net/column/details/huangwenchen-ios-sdk.html 前言:本文会通过一个完整的工程创建,讲解 CoreData的堆栈创建 四种基本的操作(查询,创建,删除,更新) 简单的MVC设计 如何使用Block传递Action,缩减代码量 再CoreData使用类别扩展NSManagedObject方法 Demo下载 ht

ios开发中使用coreData来数据存储及获取

系统:mac 10.9.5 编辑器:xcode 6.1  语言:swift 新建一个single view application,将use core Data勾选. 在xcode最左侧会有一个xxx.xcdatamodeld文件,点击添加一个entity,并双击重命名为Person.然后点击添加属性,命名为name,类型选string.到此数据模型就构造好了. 以一个数组的存储为例: 拖一个tableviewcontroller视图到故事板中,并新建一个类与视图关联,在文件结构中找到cell,