通过Core Data API访问.sqlite文件

时间:2011-08-24 14:12:42

标签: ios sqlite core-data


我是Core Data的新手,我遇到了问题 我有一个文件“db.sqlite”,它有3个表,每个表包含大约10k个记录 现在我的问题是我可以将此文件添加到我的项目中并使用CoreData API访问(选择/更新)数据
提前谢谢你。

2 个答案:

答案 0 :(得分:4)

您无法使用Core Data读取任意SQL文件。您也不能将任意SQL文件可靠地转换为Core Data可以使用的SQL文件。 Core Data的sqlite架构没有记录,也在不断变化。 Core Data仅读取和写入其架构,并且每个sqlite存储文件必须配置为特定的数据模型文件。直接为Core Data创建SQL存储始终是一个脆弱的解决方案。

了解Core Data不是SQL非常重要。实体不是表格。对象不是行。属性不是列。关系不是联接。核心数据是一个对象图管理系统,可能会或可能不会持久保存对象图,并且可能会或可能不会使用远远落后的SQL来执行此操作。试图用SQL术语来思考核心数据将导致你完全误解核心数据并导致更多的悲伤和浪费时间。

作为Mundi pointed out,您需要使用标准SQL C API读取现有SQL文件,然后将该数据加载到托管对象中,并让Core Data将对象保存到其SQL存储中。这可能听起来像是一项额外的工作,但实际上,您正在从有限的SQL API转换,该API仅关注将磁盘上和磁盘上的数据传输到Core Data API,后者为您的应用程序提供完整的数据模型。

答案 1 :(得分:2)

Core Data API实际上隐藏了所谓的持久存储的机制。它更像是一个对象建模API,可以非常有效地持久保存数据。它也可以使用与sqlite不同的数据库。

因此,如果您想使用Core Data,我建议首先导入所有记录并使用Core Data创建新的数据库文件。您可以使用SQLite API读取现有数据库和Core Data API,以将新的面向对象数据写入新数据库。

一旦所有原始数据都在Core Data中,您应该坚持下去。