3

谢谢你的帮助。

我正在尝试将核心数据添加到我的项目中,但我被困在将实际数据添加到持久存储中的位置和方式(我假设这是原始数据的位置)。

我将有 1000 个 < 对象,所以我不想使用 plist 方法。从我的搜索来看,似乎有 xml 和 csv 方法。有没有办法可以使用 SQL 进行输入?

数据不会被用户更改,数据文件是手动输入的,所以我不需要在运行时更新这些文件,此时我不限于任何类型的文件——最轻的语法是首选。

再次感谢任何帮助。

4

3 回答 3

2

您可以从 xml/csv/json 文件加载数据并在应用程序的第一顿午餐时创建数据库(如果数据库不存在,则读取数据并创建它)。更好/更快的方法可能是在您的应用程序中发布您的 sqllite DB。您可以在模拟器上以您想要的任何格式解析文件,使用您的所有实体创建一个数据库,然后从 ApplicationData 中获取它并将其作为资源添加到您的应用程序中。

于 2011-05-10T00:57:41.793 回答
1

尽管我确信可以使用更轻的文件类型,但我会在应用程序包中包含一个 JSON 文件,您可以从中导入初始数据集。

更新:有些人推荐 XML。NSXMLParser 几乎与 JSONKit 一样快(但比大多数其他解析器快得多),但 XML 语法比 JSON 重。因此,包含初始数据集的 XML 捆绑文件的权重比 JSON 中的要大。

于 2011-05-10T00:12:59.397 回答
0

考虑到 Apple 考虑其持久存储实现细节的格式,提供预制 SQLite 数据库并不是一个好主意。即字段和表格的名称可能会在 iOS 版本/手机/您能想到的任何隐藏变量之间发生变化。一般来说,您不应该关心数据的序列化是如何格式化的。

在 Apple 的开发者网站上有一篇关于导入数据的简短文章:Efficiently Importing Data

您应该以您喜欢的任何格式发送初始数据(XML 允许您有效地进行增量解析,从而减少内存占用)并编写一个导入例程以在需要导入数据时运行。

编辑:考虑到 EliBud 的评论,我仍然认为这种方法有点“不确定”...... Core Data 使用的 SQLite 数据库的格式不是你想要自己生成的(这很奇怪,简单地说,而且仍然不是您真正应该依赖的东西)。

因此,您需要使用在模拟器上运行的模拟应用程序并使用 Core Data 来创建数据库(根据 EliBud 的回答)。但是您仍然必须将数据导入模拟应用程序!虽然在“真实”计算机上执行一次而不是在移动设备上执行多次(即复制文件很容易,导入数据很困难)可能是有意义的,但您实际上是在使用模拟器作为管理工具。

但是,嘿,如果它有效...

于 2011-05-10T01:04:55.693 回答