文档章节

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];

 

 

© 著作权归作者所有

共有 人打赏支持
媛美一生
粉丝 15
博文 55
码字总数 11281
作品 0
浦东
iOS工程师
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
Spring Boot之浅析配置项解析

Spring Boot之浅析配置项解析 木叶之荣,2018年01月 Spring Boot之浅析配置项解析(一) Spring Boot之浅析配置项解析(二) Spring Boot之浅析配置项解析(三) Spring Boot之浅析配置项解析...

单农
06/09
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

kubernetes 中的 Service

kubernetes 中的 Service

健康的程序员
45分钟前
1
0
七牛云java(服务端)通用工具类

前言 需要安装lombok插件。 功能列表 上传本地文件 上传Base64图片 获取文件访问地址 上传MultipartFile 代码 pom.xml <dependency><groupId>com.qiniu</groupId><artifactId>qiniu-java......

五毛程序员
47分钟前
1
0
Pandoc 批量将 Markdown 转为 Docx

看到了小金鱼儿的博文,很给力,核心代码如下: #!/bin/shfunction ergodic(){ for fullname in `ls $1` do name=${fullname%.*} ext=${fullname##*.} if [ "$ext"x = "md"......

hengbao5
47分钟前
2
0
cocos creator实现卡牌翻转

var pic1 = cc.find("Canvas/puke/hu"); var run = cc.callFunc(function() { cc.loader.loadRes("longhu/card", cc.SpriteAtlas, function (err, atlas) { let frame = atlas.getSpriteFram......

AndyZhouX
55分钟前
0
0
Linux服务器上监控网络带宽的18个常用命令

本文介绍了一些可以用来监控网络使用情况的Linux命令行工具。这些工具可以监控通过网络接口传输的数据,并测量目前哪些数据所传输的速度。入站流量和出站流量分开来显示。 一些命令可以显示单...

谢思华
56分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部