Core Data 教程(2): 如何预载/导入已有的数据
这是系列教程的第二部分,有助于你加快掌握基本的Core Data内容。
在系列教程一中,我们为对象建立了可视化数据模型,运行了快速肮脏测试并勾在一个表视图(table view)中来显示。而在这个教程,我们将讨论如何把已有的数据导入或者预先载入到Core Data里面,这样我们的应用开始时会有一些好的默认数据。
在系列教程的最后部分,我们将讨论如何使用NSFetchedResultsController来优化应用,降低内存开销和提升响应时间。
Preloading / Importing Existing Data
预载/导入已有数据
我们要如何在Core Data中预先载入数据呢?流行的解决方案有两种:
- 启动时从外部源填入Core Data。对此,注意到数据库还没有导入,应用可以启动时从外部来源(例如SQLite数据库或是XML文件)读取数据。
- 在SQLite数据库中预先填充。对此我们可以Core Data在模型基础上建立数据库结构,然后使用工具来填入数据库。这类工具可以是基于Core Data API的Mac或者iPhone应用,或是一些直接填入SQLite数据库的程序。一旦数据库填好了,只需将其包含到应用里面作为默认数据库,在不存在已有的数据库情况下。
我们将会采用第二种方式,因为它更简单更有效。为了填充数据库,我们只需稍微扩展一下已有的Python脚本。
注意到为什么用Python脚本而不是用基于Core Data API的工具来来导入数据,是因为我们现在有点走底层的样子,将来可能会容易损坏…但是对于本教程我认为第一,由于我们刚刚接触了SQLite,这样对学习的经验巩固更好,而且对事情的进展看的更加清楚;第二,更简单!
所以,让我们拿出工程中产生的sqlite数据库的拷贝。找出相关文件的最简单的方法就是在程序委托(application delegate)中persistentStoreCoordinator函数里面storeUrl一行下方设置一个断点。你可以通过检测storeUrl变量的内容来获取sqlite数据库备份文件的完整路径。找到它并拷到你的Python脚本目录。
一旦你找到数据库,使用sqlite3来简单看看数据库的模样:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
sqlite3 FailedBanksCD.sqlite
sqlite3> .
schema
CREATE
TABLE
ZFAILEDBANKDETAILS ( Z_PK
INTEGER
PRIMARY
KEY
, Z_ENT
INTEGER
,
Z_OPT
INTEGER
, ZZIP
INTEGER
, ZINFO
INTEGER
, ZUPDATEDDATE
TIMESTAMP
,
ZCLOSEDATE
TIMESTAMP
);
CREATE
TABLE
ZFAILEDBANKINFO ( Z_PK
INTEGER
PRIMARY
KEY
, Z_ENT
INTEGER
,
Z_OPT
INTEGER
, ZDETAILS
INTEGER
, ZNAME
VARCHAR
, ZSTATE
VARCHAR
,
ZCITY
VARCHAR
);
CREATE
TABLE
Z_METADATA (Z_VERSION
INTEGER
PRIMARY
KEY
,
Z_UUID
VARCHAR
(255), Z_PLIST BLOB);
CREATE
TABLE
Z_PRIMARYKEY (Z_ENT
INTEGER
PRIMARY
KEY
, Z_NAME
VARCHAR
,
Z_SUPER
INTEGER
, Z_MAX
INTEGER
);
CREATE
INDEX
ZFAILEDBANKDETAILS_ZINFO_INDEX
ON
ZFAILEDBANKDETAILS (ZINFO);
CREATE
INDEX
ZFAILEDBANKINFO_ZDETAILS_INDEX
ON
ZFAILEDBANKINFO (ZDETAILS);
sqlite>
select
*
from
ZFAILEDBANKINFO;
1|2|1|1|Test Bank|Testland|Testville
2|2|1|2|Test Bank|Testland|Testville
3|2|1|3|Test Bank|Testland|Testville
sqlite>
select
*
from
ZFAILEDBANKDETAILS;
1|1|1|12345|1|292794835.855615|292794835.679693
2|1|1|12345|2|292794875.943392|292794875.768675
3|1|1|12345|3|292795809.375025|292795809.215297
sqlite>
select
*
from
Z_PRIMARYKEY;
1|FailedBankDetails|0|3
2|FailedBankInfo|0|3
这里有段快速描述。Z_METADATA包含了一些关于Core Data需要实现的模型信息。Z_PRIMARYKEY包含了(在其他东西里面)各个实体所用到的最大key。
至于ZFAILEDBANKINFO跟ZFAILEDBANKDETAILS,这些是我们的主要数据表。Z_PK是各个表的唯一id,Z_ENT是他们的实体id(跟Z_PRIMARYKEY表中列出的一样),最后那些是我们的普通字段。
转载于:https://www.cnblogs.com/greywolf/archive/2012/12/07/2807451.html
Core Data 教程(2): 如何预载/导入已有的数据相关推荐
- Core Data 教程:多托管对象上下文
原文:Multiple Managed Object Contexts with Core Data Tutoria 作者:Matthew Morey 译者:kmyhy 托管对象上下文是一个专门给托管 ...
- Core Data 教程入门
原文:Getting Started with Core Data Tutorial 作者:Pietro Rea 译者:kmyhy 这是<Core Data by Turoials>一书的 ...
- 手把手教你从Core Data迁移到Realm
来源:一缕殇流化隐半边冰霜 (@halfrost ) 链接:http://www.jianshu.com/p/d79b2b1bfa72 前言 看了这篇文章的标题,也许有些人还不知道Realm是什么,那 ...
- Core Data入门
简介 Core Data是iOS5之后才出现的一个框架,它提供了对象-关系映射(ORM)的功能,即能够将OC对象转化成数据,保存在SQLite数据库文件中,也能够将保存在数据库中的数据还原成OC对象. ...
- Core Data概述
昨晚熬夜看发布会(本以为屌丝终于能买得起苹果了,谁知道...),因为看不了视频直播,所以就正好有空就把www.objc.io最新的一篇文章翻译了一下,同时感谢CocoaChina翻译组提供校对,以下为 ...
- Core Data 概述
Core Data 概述 转载自: http://www.cocoachina.com/newbie/basic/2013/0911/6981.html Core Data可能是OS X和iOS里面最 ...
- 关于Core Data的一些整理(一)
关于Core Data的一些整理(一) 在Xcode7.2中只有Mast-Debug和Single View中可以勾选Use Core Data 如果勾选了Use Core Data,Xcode会自动 ...
- Caffe2教程实例,加载预训练模型
Caffe2教程实例,加载预训练模型 概述 本教程使用模型库中的预训练模型squeezenet 里分类我们自己的图片.我们需要提供要分类图片的路径或者URL信息作为输入.了解ImageNet对象代码可 ...
- core data使用教程
core data使用教程 从印象中记得还是在学校的时候老师讲过的时候用过,那时觉得好难,以至于工作2年多了一直没敢去看core data,前几天想了下,不去看不行,得都会用才行,于是那天6点下班后就 ...
最新文章
- 代替以前的F5,Ctrl+r!
- 范例ppt_消防安全知识主题班会PPT,全内容高质量课件,完整框架精美套用
- 通过项目逐步深入了解Mybatis(四)
- php 安全基础 第七章 验证与授权 永久登录
- win7家庭版远程桌面补丁_无需惊慌!微软漏洞数月后再被“预警”打补丁即可防御...
- Windows XP Embedded with Service Pack 2 开发包光盘 3CD
- 加载类_JVM类加载
- java中使用配置文件_Java中使用Properties配置文件的简单方法
- SQLServer中Case when的一个意外问题
- Service绑定模式
- IIS7.5 在已有的WEB网站上配置FTP发布
- matlab选择语句函数,Matlab基本语句和基本函数
- 计算机四级题库百度云,四级题库免费
- ReportStudio入门教程(八十四) - 冻结行标题
- 【计算机视觉】BOF图像检索
- 常用的网络协议以及使用场景
- 360度全景效果图制作步骤是什么?
- 基于PHP开发的云平台网络课堂教学学习互动平台设计
- js 自动播放音频文件,报警提示音等
- 如何选择最省心的云主机?
热门文章
- 第二代身份证计算最后一位校验位-程序
- PostGre使用总结
- idea同时启动多个tomcat【高清截图版】
- 《Web系统与技术》教材 第1章 Web系统与技术的基础知识 课件1(PPTX)
- 李群的伴随表示如何理解
- 魔塔java源代码_魔塔java代码
- python3.7魔塔游戏_基于pygame的开发:魔塔小游戏开发
- 东北大学计算机硬件题库,东北大学计算机硬件基础机考题库(150单选+编程).doc...
- 微软修复Win7 SP1安装时出现的黑屏错误“0xC0000009A”
- Zbrush人体手部模型雕刻 | 手部笔刷太好用了