【发布时间】:2011-08-22 01:46:54
【问题描述】:
感谢您的帮助。
我正在尝试将核心数据添加到我的项目中,但我不知道将实际数据添加到持久存储的位置和方式(我假设这是存放原始数据的地方)。
我将有 1000 个
数据不会由用户更改,数据文件是手动输入的,所以我不需要在运行时更新这些文件,此时我不限于任何类型的文件-最轻的语法是首选。
再次感谢您的帮助。
【问题讨论】:
标签: iphone core-data persistent-storage
感谢您的帮助。
我正在尝试将核心数据添加到我的项目中,但我不知道将实际数据添加到持久存储的位置和方式(我假设这是存放原始数据的地方)。
我将有 1000 个
数据不会由用户更改,数据文件是手动输入的,所以我不需要在运行时更新这些文件,此时我不限于任何类型的文件-最轻的语法是首选。
再次感谢您的帮助。
【问题讨论】:
标签: iphone core-data persistent-storage
虽然我确信可以使用更轻的文件类型,但我会在应用程序包中包含一个 JSON 文件,您可以从中导入初始数据集。
更新:有些人推荐 XML。 NSXMLParser 几乎与 JSONKit 一样快(但比大多数其他解析器快得多),但 XML 语法比 JSON 重。因此,包含初始数据集的 XML 捆绑文件将比 JSON 格式的文件更重要。
【讨论】:
考虑到 Apple 考虑其持久存储实现细节的格式,交付预制 SQLite 数据库并不是一个好主意。 IE。字段和表格的名称可能在 iOS 版本/手机/您能想到的任何隐藏变量之间发生变化。一般来说,您不应该关心数据的序列化是如何格式化的。
Apple 的开发者网站上有一篇关于导入数据的简短文章:Efficiently Importing Data
您应该以您喜欢的任何格式发送初始数据(XML 允许您有效地进行增量解析,从而减少内存占用)并编写一个导入例程以在需要导入数据时运行。
编辑:考虑到 EliBud 的评论,我仍然认为这种方法有点“不确定”... Core Data 使用的 SQLite 数据库的格式不是您想要生成的自己一个人(这很奇怪,简单地说,而且仍然不是您真正应该依赖的东西)。
因此,您希望使用在模拟器上运行的模拟应用程序并使用 Core Data 创建数据库(根据 EliBud 的回答)。但是您仍然需要将数据导入到 that 模拟应用程序中!虽然在“真实”计算机上执行一次而不是在移动设备上执行多次(即复制文件很容易,导入数据很困难)可能是有意义的,但您实际上是在使用模拟器作为管理工具。
但是,嘿,如果它有效的话......
【讨论】:
您可以从 xml/csv/json 文件加载数据并在应用程序的第一顿午餐时创建数据库(如果数据库不存在,则读取数据并创建它)。 更好/更快的方法可能是在您的应用程序中发布您的 sqllite DB。您可以在模拟器上以您想要的任何格式解析文件,使用您的所有实体创建一个数据库,然后从 ApplicationData 中获取它并将其作为资源添加到您的应用程序中。
【讨论】: