CoreData 简单介绍

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     }
时间: 2024-10-08 10:21:45

CoreData 简单介绍的相关文章

CoreData简单教学(二)

1.CoreData 编写方便, 管理方便, 出错不易寻找, 整体性强, 关联性强 2.简单介绍查询的办法 1 #pragma mark - 2 - (NSMutableArray *) findAll { 3 NSManagedObjectContext * cxt = [self managedObjectContext]; 4 5 NSEntityDescription * entityDescription = [NSEntityDescription entityForName:@"P

python的列表,元组和字典简单介绍

引 入 java                                   python 存取多个值:数组或list集合 ------------------------> 列表,元组 key-value格式:    Map        ------------------------>    字典 自己学习发现,java跟python这两门面向对象语言在数据类型的定义上,很多思想都是互通的,这里不说java,简单介绍一下python的列表,元组和字典. 一.列表 List: 最通

javascript的return语句简单介绍

javascript的return语句简单介绍:return语句在js中非常的重要,不仅仅具有返回函数值的功能,还具有一些特殊的用法,有个清晰的把握是非常有必要的.下面就结合实例简单介绍一下return语句的作用.一.用来返回控制和函数结果:通常情况,return语句对于一个函数是很有必要的,因为往往需要函数在一系列的代码执行后会得到一个期望的返回值,而此值就是通过return语句返回,并且将控制权返回给主调函数.语法格式: return 表达式 代码实例如下: function add(){

Object-c集合的简单介绍

一.简单介绍 NSArray/NSMutableArray NSSet/NSMutableSet NSDictionary/NSMutableDictionary NSArray.NSSet.NSDictionary是不可变的,创建的时候初始化 NSMutableArray.NSMutableSet.NSMutableDictionary是可变的 二.使用介绍 NSArray是有序的数组 NSMutableArray *myArray=[[NSMutableArray alloc] init];

plsql的环境与介绍:环境的搭建和plsql的简单介绍

PLSQL编程 1.环境的搭建 (1)创建一个存储表空间 SQL> conn /as sysdbaConnected. SQL> create tablespace plsql datafile '/u01/oracle/oradata/ORCL/plsql01.dbf' size 1G; Tablespace created. (2)创建PLSQL用户SQL> create user plsql identified by plsql default tablespace plsql;

CSS之box-sizing的用处简单介绍

前几天才发现有 box-sizing 这么个样式属性,研究了一番感觉很有意思, 通过指定容器的盒子模型类型,达到不同的展示效果 例如:当一个容器宽度定义为 width:100%;  之后,如果再增加 padding 或者 border 则会溢出父容器,是向外扩张的 如果使用该样式,指定为 box-sizing: border-box; 则 padding 和 border 就不会再溢出,而是向内收缩的,这个效果感觉非常实用, 特别是 input 和 textarea 等 现在设置 100% 再直

【玩转微信公众平台之七】 PHP语法简单介绍

经过多篇的努力,我们终于成为了微信公众平台的开发者.但是别高兴的太早,就跟修真小说一样:修炼多年武破虚空,飞升到仙界后本以为成为了天仙即可跳出三界外,不在五行中.可实际到了仙界才发现,成仙只是修行的第一步......没错,成为开发者也才只是第一步,因为现在你的微信公众平台还没有任何功能,说难听点就是小白,说好听点就是白马王子,说可爱点就是小白白,说黄色点就是洗白白,说...----------------要想在微信公众平台添加功能,那就需要写代码:既然说到写代码,那么肯定是要用php(如果用AS

Zookeeper简单介绍

转自:ZooKeeper学习第一期---Zookeeper简单介绍 一.分布式协调技术 在给大家介绍ZooKeeper之前先来给大家介绍一种技术--分布式协调技术.那么什么是分布式协调技术?那么我来告诉大家,其实分布式协调技术 主要用来解决分布式环境当中多个进程之间的同步控制,让他们有序的去访问某种临界资源,防止造成"脏数据"的后果.这时,有人可能会说这个简单,写一个调 度算法就轻松解决了.说这句话的人,可能对分布式系统不是很了解,所以才会出现这种误解.如果这些进程全部是跑在一台机上的

七、变量与常量的简单介绍

七.变量与常量的简单介绍 本文将介绍VB语言中的变量与常量. 基本概念 首先大家要明白变量和常量是很重要的东西,因为他们储存着程序运行中的各种数据.顾名思义,变量就是可以变的量,而常量就是不变的,这个概念和数学上的有点接近. 接下来我简单讲讲这两个重要的东西:计算机程序在不运行的时候,程序文件保存在硬盘上,当用户运行程序之后,系统就会把程序文件装进计算机的内存里面,无论在硬盘中还是内存中,程序数据都是以二进制的形式保存着的.当程序在运行的时候,可以把计算机的内存理解为一个超级大的棋盘,每个格子都