文档章节

core data浅析

媛美一生
 媛美一生
发布于 2016/03/02 15:42
字数 731
阅读 13
收藏 0
点赞 1
评论 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
博文 51
码字总数 11281
作品 0
浦东
iOS工程师
HDFS深入浅析

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

linuxprobe ⋅ 2016/06/20 ⋅ 0

C中异步IO浅析之五:异步IO的调试

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

存储之厨 ⋅ 2017/12/22 ⋅ 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 ⋅ 1

MINA 2.0.9: MessageReceived事件浅析

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

强子哥哥 ⋅ 2015/03/25 ⋅ 0

Android解析ClassLoader(二)Android中的ClassLoader

相关文章 Java虚拟机系列 Android系统启动系列 Android解析ClassLoader系列 前言 在上一篇文章我们学习了Java的ClassLoader,很多同学会把Java和Android的ClassLoader搞混,甚至会认为Andro...

刘望舒 ⋅ 2017/10/18 ⋅ 0

Spring Boot 2.0 自动配置原理浅析

Spring Boot 2.0 自动配置原理浅析 泥瓦匠BYSocket2017-12-221 阅读 SpringJava技术 本章内容 外化配置和自动配置 自动配置原理浅析 Starter 组件浅析 小结 阅读时间:6 分钟 摘录:至简,记...

泥瓦匠BYSocket ⋅ 2017/12/22 ⋅ 0

Android AIDL——实现机制浅析

1.基于前面写的aidl使用,这段时间准备研究ActivityManager框架,对aidl进行了更深入的研究,因为android框架大量使用了 进程通信机制,所以,在研究android framework前认真研究一下AIDL的实...

andy_android ⋅ 2011/12/17 ⋅ 3

linux内存屏障浅析

内存屏障是一个很神奇的东西,之前翻译了linux内核文档memory-barriers.txt,对内存屏障有了一定有理解。现在用自己的方式来整理一下。 在我看来,内存屏障主要解决了两个问题:单处理器下的...

子璐 ⋅ 2015/07/15 ⋅ 0

Android Camera架构浅析

1、Camera成像原理介绍 Camera工作流程图 Camera的成像原理可以简单概括如下: 景物(SCENE)通过镜头(LENS)生成的光学图像投射到图像传感器(Sensor)表面上,然后转为电信号,经过A/D(模数转...

sflfqx ⋅ 2014/10/31 ⋅ 0

Discuz代码浅析–getgpc()

function getgpc($k, $type='GP') { $type = strtoupper($type); switch($type) { case 'G': $var = &$GET; break; case 'P': $var = &$POST; break; case 'C': $var = &$COOKIE; break; def......

路边拾草人 ⋅ 2011/11/03 ⋅ 2

没有更多内容

加载失败,请刷新页面

加载更多

下一页

OSChina 周六乱弹 —— 假如你被熊困到树上

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @小小编辑:推荐歌曲《如果写不出好的和弦就该在洒满阳光的钢琴前一起吃布丁》 《如果写不出好的和弦就该在洒满阳光的钢琴前一起吃布丁》- 谢...

小小编辑 ⋅ 38分钟前 ⋅ 4

vbs 取文件大小 字节

dim namedim fs, s'name = Inputbox("姓名")'msgbox(name)set fs = wscript.createobject("scripting.filesystemobject") 'fs为FSO实例if (fs.folderexists("c:\temp"))......

vga ⋅ 今天 ⋅ 1

高并发之Nginx的限流

首先Nginx的版本号有要求,最低为1.11.5 如果低于这个版本,在Nginx的配置中 upstream web_app { server 到达Ip1:端口 max_conns=10; server 到达Ip2:端口 max_conns=10; } server { listen ...

算法之名 ⋅ 今天 ⋅ 0

Spring | IOC AOP 注解 简单使用

写在前面的话 很久没更新笔记了,有人会抱怨:小冯啊,你是不是在偷懒啊,没有学习了。老哥,真的冤枉:我觉得我自己很菜,还在努力学习呢,正在学习Vue.js做管理系统呢。即便这样,我还是不...

Wenyi_Feng ⋅ 今天 ⋅ 0

博客迁移到 https://www.jianshu.com/u/aa501451a235

博客迁移到 https://www.jianshu.com/u/aa501451a235 本博客不再更新

为为02 ⋅ 今天 ⋅ 0

win10怎么彻底关闭自动更新

win10自带的更新每天都很多,每一次下载都要占用大量网络,而且安装要等得时间也蛮久的。 工具/原料 Win10 方法/步骤 单击左下角开始菜单点击设置图标进入设置界面 在设置窗口中输入“服务”...

阿K1225 ⋅ 今天 ⋅ 0

Elasticsearch 6.3.0 SQL功能使用案例分享

The best elasticsearch highlevel java rest api-----bboss Elasticsearch 6.3.0 官方新推出的SQL检索插件非常不错,本文一个实际案例来介绍其使用方法。 1.代码中的sql检索 @Testpu...

bboss ⋅ 今天 ⋅ 0

informix数据库在linux中的安装以及用java/c/c++访问

一、安装前准备 安装JDK(略) 到IBM官网上下载informix软件:iif.12.10.FC9DE.linux-x86_64.tar放在某个大家都可以访问的目录比如:/mypkg,并解压到该目录下。 我也放到了百度云和天翼云上...

wangxuwei ⋅ 今天 ⋅ 0

PHP语言系统ZBLOG或许无法重现月光博客的闪耀历史[图]

最近在写博客,希望通过自己努力打造一个优秀的教育类主题博客,名动江湖,但是问题来了,现在写博客还有前途吗?面对强大的自媒体站点围剿,还有信心和可能型吗? 至于程序部分,我选择了P...

原创小博客 ⋅ 今天 ⋅ 0

IntelliJ IDEA 2018.1新特性

工欲善其事必先利其器,如果有一款IDE可以让你更高效地专注于开发以及源码阅读,为什么不试一试? 本文转载自:netty技术内幕 3月27日,jetbrains正式发布期待已久的IntelliJ IDEA 2018.1,再...

Romane ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部