码迷,mamicode.com
首页 > 移动开发 > 详细

iOS-Senior-数据处理之CoreData

时间:2016-05-07 13:16:36      阅读:299      评论:0      收藏:0      [点我收藏+]

标签:

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中的数据是缓存在内存中的副本,要想达到持久化目的必须更新保存

 

iOS-Senior-数据处理之CoreData

标签:

原文地址:http://www.cnblogs.com/zhoulina/p/5467977.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!