这是系列教程的第二部分,有助于你加快掌握基本的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): 如何预载/导入已有的数据相关推荐

  1. Core Data 教程:多托管对象上下文

    原文:Multiple Managed Object Contexts with Core Data Tutoria 作者:Matthew Morey 译者:kmyhy 托管对象上下文是一个专门给托管 ...

  2. Core Data 教程入门

    原文:Getting Started with Core Data Tutorial 作者:Pietro Rea 译者:kmyhy 这是<Core Data by Turoials>一书的 ...

  3. 手把手教你从Core Data迁移到Realm

    来源:一缕殇流化隐半边冰霜 (@halfrost ) 链接:http://www.jianshu.com/p/d79b2b1bfa72 前言 看了这篇文章的标题,也许有些人还不知道Realm是什么,那 ...

  4. Core Data入门

    简介 Core Data是iOS5之后才出现的一个框架,它提供了对象-关系映射(ORM)的功能,即能够将OC对象转化成数据,保存在SQLite数据库文件中,也能够将保存在数据库中的数据还原成OC对象. ...

  5. Core Data概述

    昨晚熬夜看发布会(本以为屌丝终于能买得起苹果了,谁知道...),因为看不了视频直播,所以就正好有空就把www.objc.io最新的一篇文章翻译了一下,同时感谢CocoaChina翻译组提供校对,以下为 ...

  6. Core Data 概述

    Core Data 概述 转载自: http://www.cocoachina.com/newbie/basic/2013/0911/6981.html Core Data可能是OS X和iOS里面最 ...

  7. 关于Core Data的一些整理(一)

    关于Core Data的一些整理(一) 在Xcode7.2中只有Mast-Debug和Single View中可以勾选Use Core Data 如果勾选了Use Core Data,Xcode会自动 ...

  8. Caffe2教程实例,加载预训练模型

    Caffe2教程实例,加载预训练模型 概述 本教程使用模型库中的预训练模型squeezenet 里分类我们自己的图片.我们需要提供要分类图片的路径或者URL信息作为输入.了解ImageNet对象代码可 ...

  9. core data使用教程

    core data使用教程 从印象中记得还是在学校的时候老师讲过的时候用过,那时觉得好难,以至于工作2年多了一直没敢去看core data,前几天想了下,不去看不行,得都会用才行,于是那天6点下班后就 ...

最新文章

  1. 代替以前的F5,Ctrl+r!
  2. 范例ppt_消防安全知识主题班会PPT,全内容高质量课件,完整框架精美套用
  3. 通过项目逐步深入了解Mybatis(四)
  4. php 安全基础 第七章 验证与授权 永久登录
  5. win7家庭版远程桌面补丁_无需惊慌!微软漏洞数月后再被“预警”打补丁即可防御...
  6. Windows XP Embedded with Service Pack 2 开发包光盘 3CD
  7. 加载类_JVM类加载
  8. java中使用配置文件_Java中使用Properties配置文件的简单方法
  9. SQLServer中Case when的一个意外问题
  10. Service绑定模式
  11. IIS7.5 在已有的WEB网站上配置FTP发布
  12. matlab选择语句函数,Matlab基本语句和基本函数
  13. 计算机四级题库百度云,四级题库免费
  14. ReportStudio入门教程(八十四) - 冻结行标题
  15. 【计算机视觉】BOF图像检索
  16. 常用的网络协议以及使用场景
  17. 360度全景效果图制作步骤是什么?
  18. 基于PHP开发的云平台网络课堂教学学习互动平台设计
  19. js 自动播放音频文件,报警提示音等
  20. 如何选择最省心的云主机?

热门文章

  1. 第二代身份证计算最后一位校验位-程序
  2. PostGre使用总结
  3. idea同时启动多个tomcat【高清截图版】
  4. 《Web系统与技术》教材 第1章 Web系统与技术的基础知识 课件1(PPTX)
  5. 李群的伴随表示如何理解
  6. 魔塔java源代码_魔塔java代码
  7. python3.7魔塔游戏_基于pygame的开发:魔塔小游戏开发
  8. 东北大学计算机硬件题库,东北大学计算机硬件基础机考题库(150单选+编程).doc...
  9. 微软修复Win7 SP1安装时出现的黑屏错误“0xC0000009A”
  10. Zbrush人体手部模型雕刻 | 手部笔刷太好用了