我需要使用现有的数据库模式,其中包含数据。是否可以从给定的SQLite文件获取数据到iOS数据库以使用Core Data和我要创建的模型?如果没有,你的建议是什么?我真的需要将现有数据传输到设备数据库,因此我可以将它与我的应用程序一起使用。
感谢。
答案 0 :(得分:1)
如果您事先不知道数据库的结构,我建议不要使用Core Data。 Apple设计了Core Data,以便您事先设置数据结构。然后,在应用程序中使用该结构。但是,采用任意SQLite表结构并尝试使其适应预设的Core Data结构将是最困难的。我不会说这是不可能的,但是为了使它工作,你需要做的抽象级别,你只需要使用SQLite就更加可行。我建议添加某种类型的数据库包装器,如FMDB,以使用Objective-C访问数据(而不是C函数)。这样您就不需要调整SQLite文件,而是直接使用该文件(或将其导入现有的SQLite文件)。
如果您事先知道了结构,那么是的,将数据从SQLite导入核心数据应该相当容易。您首先需要使用Apple的工具在Core Data中重新创建该结构。在运行时,您可以从SQLite数据库中获取信息并将其添加到Core Data。如果您还没有这样做,请阅读Apple的Core Data Programming Guide以了解等式的核心数据方面。我仍然建议FMDB访问SQLite数据库,因为这样可以更轻松地从SQLite获取数据。
我还想指出,如果SQLite数据库发生变化(或可能会发生变化),通过避免核心数据可能会更好地服务,具体取决于它的变化频率。原因很简单:为了使Core Data能够适应SQLite数据库中的更改,您必须进行更改,然后向应用程序发出更新。这可能会提供许多天(可能是几周),您的应用程序将无法完全同步到SQLite数据库,甚至可能导致错误。核心数据很适合很多事情,但是调整数据结构不是其中之一。
答案 1 :(得分:0)
我在理解这个问题时遇到了一些麻烦,但我认为就是这样:
如何在外部创建的sqlite .db上使用CoreData CoreData?
如果那是你的问题,这里有几个链接
http://www.raywenderlich.com/980/core-data-tutorial-how-to-preloadimport-existing-data
但是,与其他答案一样,Apple recommends against this