文档章节

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

没有更多内容

加载失败,请刷新页面

加载更多

原型模式

1、原型模式-定义 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象 克隆(浅度克隆->拷贝值类型或者引用,深度克隆->创建新的对象,开辟新的内存) 例如客户端知道抽象Pro...

阿元
今天
29
0
awk命令扩展使用操作

awk 中使用外部shell变量 示例1 [root@centos01 t1022]# A=888[root@centos01 t1022]# echo "" | awk -v GET_A=$A '{print GET_A}'888[root@centos01 t1022]# echo "aaaaaaaaaaaaa" | aw......

野雪球
今天
27
0
深入解析MySQL视图VIEW

Q:什么是视图?视图是干什么用的? A:视图(view)是一种虚拟存在的表,是一个逻辑表,本身并不包含数据。作为一个select语句保存在数据字典中的。   通过视图,可以展现基表的部分数据;...

IT--小哥
今天
33
0
虚拟机学习之二:垃圾收集器和内存分配策略

1.对象是否可回收 1.1引用计数算法 引用计数算法:给对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加1;当引用失效时,计数器值就减1;任何时候计数器值为0的对象就是不可能...

贾峰uk
今天
20
0
smart-doc功能使用介绍

smart-doc从8月份底开始开源发布到目前为止已经迭代了几个版本。在这里非常感谢那些敢于用smart-doc去做尝试并积极提出建议的社区用户。因此决定在本博客中重要说明下smart-doc的功能,包括使...

上官胡闹
昨天
32
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部