0

我需要使用已经存在的数据库模式,其中包含数据。是否可以从给定的 SQLite 文件中获取数据到 iOS 数据库以使用我要创建的核心数据和模型?如果没有,您的建议是什么?我真的需要将现有的数据从设备数据库传输到设备数据库,这样我就可以在我的应用程序中使用它。

谢谢。

4

2 回答 2

1

如果您事先不知道数据库的结构,我建议您不要为此使用 Core Data。Apple 设计了 ​​Core Data,以便您事先设置数据结构。然后,您在应用程序中使用该结构。但是采用任意 SQLite 表结构并尝试使其适应预设的核心数据结构将是最困难的。我不会说这是不可能的,但是你必须做的抽象级别才能使它工作,你可以简单地使用 SQLite。我建议添加某种数据库包装器,例如FMDB,以使用 Objective-C(而不是 C 函数)访问数据。这样您就不需要改编 SQLite 文件,而是直接使用该文件(或将其导入现有的 SQLite 文件)。

如果您事先知道结构,那么是的,将数据从 SQLite 导入核心数据应该相当容易。您首先需要使用 Apple 的工具在 Core Data 中重新创建该结构。在运行时,您可以从 SQLite 数据库中获取信息并将其添加到 Core Data。如果您还没有这样做,请阅读 Apple 的核心数据编程指南以了解等式的核心数据方面。我仍然推荐FMDB来访问 SQLite 数据库,因为它会使从 SQLite 获取数据变得更加容易。

我还想指出,如果 SQLite 数据库发生变化(或可能发生变化),您可能仍然可以通过避免使用 Core Data 来获得更好的服务,具体取决于它的变化频率。这样做的原因很简单:为了让 Core Data 适应 SQLite 数据库中的更改,您必须进行更改,然后向您的应用程序发布更新。这可能会导致您的应用程序无法完全同步到 SQLite 数据库甚至可能导致错误的很多天(可能是几周)。Core Data 在很多事情上都很棒,但适应数据结构不是其中之一。

于 2012-06-18T15:04:09.217 回答
0

我在理解这个问题时遇到了一些麻烦,但我认为是这样的:

如何在 CoreData 之外创建的 sqlite .db 上使用 CoreData?

如果这是你的问题,这里有几个链接

http://ablogontech.wordpress.com/2009/07/13/using-a-pre-populated-sqlite-database-with-core-data-on-iphone-os-3-0/

http://www.raywenderlich.com/980/core-data-tutorial-how-to-preloadimport-existing-data

但是,与其他答案一样,Apple 建议不要这样做

于 2012-06-19T21:09:20.283 回答