文档章节

core data浅析

媛美一生
 媛美一生
发布于 2016/03/02 15:42
字数 731
阅读 13
收藏 0

Core data 浅析

   类似于之前使用过的FMDB,是苹果自带的,管理数据库的工具。

 

   使用原因:

它能让你为model层写的代码更简洁,无需优化,无需测试。

 

 Core data 

能利用model层的信息和运行时的特性,而不是通过过程层的代码实现的。 

除了能提供强大的安全支持和错误处理外,它还提供了最优的内存扩展性,可实现有竞争力的解决方案。

主要是iOSsqlite数据库的封装。 

有对象一一关系的映射功能,能把oc的对象存储成数据库或xml等。

读取时不需要使用sql语句。

 

 

误解:

不是关系型数据库,也不是关系型数据库管理系统(RDBMS),core data为数据变更管理,对象存储,对象读取恢复功能提供了支持。它可以使用sqlite做为持久化存储的类型、它本身不是一个数据库。

 

代码步骤:

1.导入库<core data.framework>  和 <core data/core data.h >

2.这样托管对象模型知道所有当前工程中用到的托管对象的定义,创建一个NSmanaged ObjectModel数据模型文件

 1>创建数据模型文件->new file ->core data ->选中data model,创建文件(user.xcdatamodeld

 2>创建跟数据模型文件关联的数据模型类,new file ->core data ->选中NSManaged object of subclass ->关联上user.xcdatamodeld数据模型文件中的usermodel

3.(用代码初始化coredata

 1>导入<core data/core data.h >

 2>从沙盒包内 读取数据模型文件

A.获取到coredata文件的路径,并转化为URL

  //在包内user.xcdatamodeld会转化为user.momd

路径:NSString *coredatapath = [[NSBundle mainBundle] pathForResource:@user ofType:@momd]; 

加载文件中数据:

NSManagedObjectModel *model = [[NSManagedObjectModel  alloc] initWithContentsOfUrl:[NSUrl fileUrlWithPath:coredatapath]];

b.NSManagedObjectModel *model = [NSManagedObjectModel mergedModelFromBundels:nil];nil表示连接项目中所有的.xcdatamodeld文件为一个datamodel这是一个非常好的方法,把多个entity放在各自的xcodemodel文件中分开管理,然后用这个函数连接起来生成一个datamodel,这样就可以对应一个persistentstore

 3>创建协调器

NSPersistentStoreCoordinator *coordinator =[ [NSPersistentStoreCoordinator alloc]  initWithManagedObjectModel:model];

 

4>coreData数据映射到数据库

  1.找到数据库路径(并创建该文件)

 NSString *path = [NSString stringWithFormat:@%@/Documents/user.sqlite,NSHomeDirectory];

 2.将数据库和模型文件关联上

NSPersistentStore *store = [coordinaor addPersistentStrore withType:NSSqlitestore TypeConfiguration:nil  URL:[NSURL  fileURLWithPath:path] option:nil error:nil];

5> 创建上下文托管对象,增删改查,通过上下文对象操作的

NSManagedObjectContext *context = [[NSManagedObjectContext  alloc]  init];

context.persistentStoreCoordinator = coordinator;

 

 

 

Magocal Record 第三方库

作用:专门操作coredata

步骤:

1>初始化操作,创建数据模型文件

2>根据数据模型文件创建关联的数据模型类

 

1.导入头文件<magicalRecord.h>

2.APPDelegate中初始化数据库

  [MagicalRecord setUpCoreDataStackWithAutoMogratingSqliteStoreNamed:@sqlite];

3.增删改查

 增:根据coredata模型创建对象

 Eg. UserModel *item = [UserModel MR_createEntity];

 存到数据库

  [[NSManagedObjectContext MR_defaultContext]  MR_saveTopersistentStoreAndWait];

 

 

© 著作权归作者所有

共有 人打赏支持
媛美一生
粉丝 16
博文 55
码字总数 11281
作品 0
浦东
iOS工程师
私信 提问
surging教学视频资源汇总

surging是什么 surging 是一个分布式微服务框架,提供高性能RPC远程服务调用,采用Zookeeper、Consul作为surging服务的注册中心,集成了哈希,随机,轮询、压力最小优先作为负载均衡的算法,R...

fanly11
04/03
0
0
HDFS深入浅析

一、HDFS的背景介绍 随着数据量越来越大, 在 一个操作系统管辖的范围存不下了, 那么就 分配到更多的操作系统管理的磁盘中, 但是不方便管理和维护,迫切需要一种系统来管理多台机器上的文件...

linuxprobe
2016/06/20
49
0
C中异步IO浅析之五:异步IO的调试

C中异步IO浅析之五:异步IO的调试 1. 背景 异步IO函数在使用的时候,由于它本身异步的特点,在提交IO请求的时候通常是不知道是否有错误,更谈不上返回错误类型了,只有等到有对应的event生成...

存储之厨
2017/12/22
0
0
android学习笔记--android启动过程之init.rc文件浅析

init.rc文件结构 文件位置: init.c : /system/core/init init.rc : /system/core/rootdir 首先init.rc文件是以模块为单位的,每个模块里的内容都是一起执行的,模块分为3种类型:on、servi...

cubieboard
2014/08/08
0
1
MINA 2.0.9: MessageReceived事件浅析

为了能够观察此事件,我修改了源码,抛出异常。 / {@inheritDoc} / @Override public void messageReceived(IoSession session, Object message) throws Exception { System.out.println("1"......

强子哥哥
2015/03/25
326
0

没有更多内容

加载失败,请刷新页面

加载更多

大数据教程(9.5)用MR实现sql中的jion逻辑

上一篇博客讲解了使用jar -jar的方式来运行提交MR程序,以及通过修改YarnRunner的源码来实现MR的windows开发环境提交到集群的方式。本篇博主将分享sql中常见的join操作。 一、需求 订单数据表...

em_aaron
9分钟前
0
0
十万个为什么之什么是resultful规范

起源 越来越多的人开始意识到,网站即软件,而且是一种新型的软件。这种"互联网软件"采用客户端/服务器模式,建立在分布式体系上,通过互联网通信,具有高延时(high latency)、高并发等特点...

尾生
15分钟前
0
0
《告诉你真实的美国教育》的读后感3900字

《告诉你真实的美国教育》的读后感3900字: 文章的开篇分析了我们耳熟能详的关于美国教育的小故事,就是那个因为幼儿园的老师教了“0”这个字母,然后妈妈告老师剥夺了孩子的想象力,再然后幼...

原创小博客
23分钟前
0
0
Terraform配置文件(Terraform configuration)

Terraform配置文件 翻译自Terraform Configuration Terraform用文本文件来描述设备、设置变量。这些文件被称为Terraform配置文件,以.tf结尾。这一部分将讲述Terraform配置文件的加载与格式。...

buddie
39分钟前
1
0
exportfs命令, vsftp搭建ftp服务

exportfs命令 当修改/etc/exports文件后,更改的内容是不会立即生效的。如果重启nfs服务,会导致客户端重启期间的请求是挂起等待的,可以把客户端的挂载umount进行卸载后,再重启nfs服务,但...

野雪球
49分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部