码迷,mamicode.com
首页 > 其他好文 > 详细

CoreData 简单介绍

时间:2015-09-06 21:36:12      阅读:132      评论:0      收藏:0      [点我收藏+]

标签:

1.Core Data提供了一种简便的对象持久化管理方法(是数据持久化的最佳方式),使你可以不用关心数据的存储,只需要关心对象的增加、删除、更改、读写。

   Core Data框架提供了对象-关系映射(ORM)的功能,即能够将OC对象转化成数据,保存在SQLite数据库文件中,也能够将保存在数据库中的数据还原成OC对象在数据操作过程中,无需编写任何SQL语句 要使用Core Data,需要导入CoreData框架

2.数据最终的存储类型可以是:SQLite数据库,XML,二进制,内存里,或自定义数据类型

3.好处:能够合理管理内存,避免使用sql的麻烦,高效

4.构成:

(1)NSManagedObjectContext(被管理的数据上下文),类似数据库句柄,所有的增删改都通过它来操作;这是沙盒中数据库对应在内存中的一个映射,我们主要在这个上下文中请求数据

操作实际内容(操作持久层)

作用:插入数据,查询数据,删除数据

创建:需要设置他的NSPersistentStoreCoordinator 属性才能创建成功

[注:]对上下文进行修改后,一定要对内存中的数据进行保存,否则不能和沙盒中的数据同步,只需调用下面两种方法中的一种即可

    //第 一 种 方 式 直 接 保 存 上 下 文
    if ([context save:nil]) {
        NSLog(@"保存成功---");
    } else {
        NSLog(@"保存失败===");
    };
    }
    
    
    //第二种,调用appdelegate 中的save方法
    [myDelegate saveContext];


(2)NSManagedObjectModel(被管理的数据模型)

数据库所有表格或数据结构,包含各实体的定义信息

创建:根据.xcdatamodeld 文件 创建

eg:   

   NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"pro_CoreData" withExtension:@"momd"];
    _managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];


作用:添加实体的属性,建立属性之间的关系

操作方法:视图编辑器,或代码

(3)NSPersistentStoreCoordinator(数据读取存储助手类,负责接收到上下文的数据请求,并且去数据库中读取,然后返回给上下文)

相当于数据库的连接器

创建:需要设置他的NSManagedObjectModel 属性才能创建成功

作用:设置数据存储的名字,位置,存储方式,和存储时机

(4)NSManagedObject(被管理的数据记录)

相当于数据库中的表格记录

eg:

 NSArray *arr = [context  executeFetchRequest:(NSFetchRequest *)request error:(NSError **)error];

context 请求返回的arr 中存储的对象即为 NSManagedObject,然后可以通过他来做具体的操作,例如更新tableView数据

(5)NSFetchRequest(获取数据的请求)

相当于查询语句

(6)NSEntityDescription(实体结构)

相当于表格结构

(7)后缀为.xcdatamodeld的包

里面是.xcdatamodel文件,用数据模型编辑器编辑

编译后为.momd或.mom文件

-------------------------------------------------------

简单应用:(添加班级)

 1     //拿到APPDelegate
 2     //这个对象时一个唯一的,是整个应用程序的代理
 3     //[UIApplication sharedApplication] 是拿到整个应用程序
 4     
 5     AppDelegate *myDelegate = [UIApplication sharedApplication].delegate;
 6     
 7     //拿到AppDelegate 中的上下文
 8     NSManagedObjectContext *context = myDelegate.managedObjectContext;
 9     
10     
11     //创建一个教室的对象,并且添加到上下文中,然后通过上下文保存到数据库中去
12     
13     //实体描述类
14     
15     //创建一个在appdelegate的上下文中存在的实例
16     
17     NSEntityDescription *entity = [NSEntityDescription entityForName:@"ClassRoom" inManagedObjectContext:context];
18     
19     //根据上面创建的实体描述对象创建一个实体
20     //并且插入到上下文中
21     //执行插入后,这个classroom对象就已经被上下文管理了
22     
23     ClassRoom *classRoom = (ClassRoom *)[[ClassRoom alloc] initWithEntity:entity insertIntoManagedObjectContext:context];
24     
25     //被管理对象  --> 创建出来就会被上下文所管理,可以随意修改,修改后上下文中对应的这个对象也改变了
26     
27     //被管理对象的修改实际是直接修改的上下文
28     classRoom.name = _className.text;
29     classRoom.classId = @([_classID.text integerValue]);
30     
31     
32     //直 接 保 存 上 下 文,防止和沙盒数据不同步
33     if ([context save:nil]) {
34         NSLog(@"保存成功---");
35     } else {
36         NSLog(@"保存失败===");
37     }

 

CoreData 简单介绍

标签:

原文地址:http://www.cnblogs.com/amazingliu/p/4787118.html

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