数据处理之CoreData

一、CoreData数据库框架与Sqlite对比

Sqlite:

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

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

3、在OC中不是可视化的

CoreData:

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

2、可以实现多种文件格式NSSQLiteStoreType、NSBinaryStoreType、NSInMemoryStoreType、NSXMLStoreType

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

二、CoreData核心对象

实体管理类:NSManagedObject

实体描述类:NSEntityDescription(用来描述实体类)

数据模型器类:NSManagedObjectModel(代表CoreData的模型文件)

数据管理器类:NSManagedObjectContext (数据库上下文管理对象)

数据连接器:NSPersistentStoreCoordinator (持久化存储调节器)

数据模型器类:NSManagedObjectModel (管理对象)

三、CoreData数据库的简单操作

切换可视化关系图

添加数据操作:

- (void)addPerson {

    //添加步骤
    //1: 创建person实体对象, 然后告诉"context", 让它做好准备, 将这个对象添加到数据库中

    //实例对象有两种方式 [初始化对象需要借用NSEntityDescription]
    //第一种
//    Person *person = [NSEntityDescription insertNewObjectForEntityForName:@"person" inManagedObjectContext:self.managedObjectContext];

    //第二种
    //创建一个entity实体
    NSEntityDescription *entityDescription = [NSEntityDescription entityForName:@"Person" inManagedObjectContext:self.managedObjectContext];
    //创建person对象
    Person *per = [[Person alloc]initWithEntity:entityDescription insertIntoManagedObjectContext:self.managedObjectContext];
    //2.给对象属性赋值
    per.personName = @"MBBoy";
    per.personGender = @"Unknow";
    per.personAge = @10;
    //将车的对象通过实体描述类创建出来
    Car *audiCar = [NSEntityDescription insertNewObjectForEntityForName:@"Car" inManagedObjectContext:self.managedObjectContext];

    audiCar.price = @300000;
    audiCar.color = @"白色";
    audiCar.brand = @"奥迪A7";

    Car *benchiCar = [NSEntityDescription insertNewObjectForEntityForName:@"Car" inManagedObjectContext:self.managedObjectContext];

    benchiCar.price = @500000;
    benchiCar.color = @"红色";
    benchiCar.brand = @"奔驰SUV";

    //将两辆车放在集合中存储然后进行赋值
    NSSet *carSet = [NSSet setWithObjects:audiCar, benchiCar, nil];

    per.personCar = carSet;

    //3.将对象存入数据库
    BOOL result = [_managedObjectContext save:nil];

    //4.判断是否插入成功
    if (result) {
        NSLog(@"添加数据成功");
    } else {
        NSLog(@"添加数据失败");
    }
}

版本更换:

选中Relationships --> Editor --> Add Model Version

时间: 2024-10-13 19:56:57

数据处理之CoreData的相关文章

数据处理之CoreData框架

CoreData只是个框架,并不是数据库. CoreData最大的优点就是可以将普通的数据当成“程序猿”们最喜欢的对象来操作,而不必去在意数据在磁盘上的存储方式,并且CoreData可以合理的管理内存,使用起来更加高效. 1.CoreData中的关键类 NSManagedObjectModel(被管理的对象模型):数据库所有表格或数据结构,包含各实体的定义信息作用:添加实体的属性,建立属性之间的关系操作方法:视图编辑器,或代码 NSManagedObjectContext(被管理的对象上下文)操

iOSDay37数据处理之CoreData

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

SQLite和CoreData数据库的比较

1. SQLite数据库 sqlite数据库操作的基本流程是, 创建数据库, 再通过定义一些字段来定义表格结构, 可以利用sql语句向表格中插入记录, 删除记录, 修改记录, 表格之间也可以建立联系. 这些操作都需要使用SQL语句去实现,感觉操作很直接.如果先前有一点数据库和SQL基础的话,写起来会感觉很亲切,都是一些数据库操作的语句.但是当操作变多之后,语句越来越多,就很烦,代码比较多,看起来也会混乱一些. 如果想要详细了解,可以看iOS学习36数据处理之SQLite数据库 2. CoreDa

认识CoreData—使用进阶

之前两篇文章都比较偏理论,文字表达比较多一些,但都是干货!学习时先理解理论知识,才能更好的帮助后面的理解.在这篇文章中,将会涉及关于CoreData的一些复杂操作,这些操作会涉及分页查询.模糊查询.批处理等高级操作.通过这些操作可以更好的使用CoreData,提升CoreData性能.文章中将会出现大量示例代码,通过代码的方式更有助于理解. 文章内容还会比较多,希望各位耐心看完.文章中如有疏漏或错误,还请各位及时提出,谢谢! NSPredicate 概述 在iOS开发过程中,很多需求都需要用到过

【CoreData】parent-child关系ManagedObjectContext应用

当我们一开始使用CoreData框架和唯一的MOC进行应用的数据持久化的时候,如果创建项目的时候选择了"使用CoreData",这会是XCode自动生成的模板代码的样子. 同时,配合NSFetchedResultsController使用CoreData框架极大地简化了在各种各样的情况下使用tableview的麻烦. 有两种情形,我们想要CoreData多线程,或者使用多个MOC(ManagedObjectContext):  iOS5新提出了parent-child MOC大大简化了

认识CoreData—初识CoreData

http://www.cocoachina.com/ios/20160729/17245.html 这段时间公司一直比较忙,和组里小伙伴一起把公司项目按照之前逻辑重写了一下.由于项目比较大,还要兼顾之前项目的迭代和其他项目,目前为止只写完第一阶段. 之前项目本地持久化方案主要用的是SQLite,这次重写项目打算换一种持久化方案,于是我们经过讨论选择了苹果的"亲儿子"CoreData. 在使用CoreData的过程中,我也是一边学习一边实践.在学习的过程中,一些写的质量比较高的博客对我的

iOS CoreData (一) 增删改查

代码地址如下:<br>http://www.demodashi.com/demo/11041.html Core Data是iOS5之后才出现的一个框架,本质上是对SQLite的一个封装,它提供了对象-关系映射(ORM)的功能,即能够将OC对象转化成数据,保存在SQLite数据库文件中,也能够将保存在数据库中的数据还原成OC对象,通过CoreData管理应用程序的数据模型,可以极大程度减少需要编写的代码数量! ##一.运行效果##二.程序实现 1. 首先创建一个coreData 模型文件:系统

海量数据处理技术学习

海量数据处理的常用技术可分为: 外排序:因为海量数据无法全部装入内存,所以数据的大部分存入磁盘中,小部分在排序需要时存入内存. MapReduce:分布式处理技术 hash技术:以Bloom filter技术为代表 外排序:主要适用于大数据的排序.去重. 分布式处理技术:MapReduce 技术思想是将数据交给不同的机器去处理,将数据切分,之后结果归约. 举例,统计出一批数据的TOP N 首先可以根据数据值或者数据HASH(MD5)后的值将数据按照范围划分,不同的服务器负责处理各种的数值范围,实

coredata 的基本使用(转载)

CoreData提供了一种简便的对象持久化管理方法,使你可以不用关心数据的存储,只需要关心对象的增加.删除.更改.读写. 基本概念托管对象(managed object)一个托管对象代表你想要保存到数据存储中的一个对象.这在概念上类似于SQL中的一条记录, 并且通常也包含一些域,这些域对应于你想要保存的对象的属性. 数据存储(data store)Core Data支持4中类型的数据存储:SQLiteStore, XMLStore, BinaryStore, InMemoryStore. 托管对