我的应用程序涉及通过互联网获取大型json文件,然后将其解析为Core Data。预填充版本的核心数据?
这很好,但我怎样才能将已经充满的Core Data数据库版本加载到我的应用程序中,所以当它们第一次启动时它就在那里。用户可以决定稍后刷新它。
我的应用程序涉及通过互联网获取大型json文件,然后将其解析为Core Data。预填充版本的核心数据?
这很好,但我怎样才能将已经充满的Core Data数据库版本加载到我的应用程序中,所以当它们第一次启动时它就在那里。用户可以决定稍后刷新它。
核心数据数据库只是一个SQLite数据库文件。您可以将其交付到主包中,然后将其复制到文档文件夹,然后将其与永久性商店协调人关联。
有一个合理的教程关于预加载在Ray Wenderlich's site。
通常 - 创建一个单独的项目,将JSON文件解析为核心数据数据库。创建你的真实项目,将对象模型和数据库文件复制到这个新项目中。
现在,在应用程序启动时,检查数据库是否存在于文档的目录中,如果不存在,请从您的应用程序包复制预先填好的数据库。
确保持久存储协调器与文档文件夹中的数据库一起使用,而不是应用程序包中的数据库。
更新2012年6月
我有GitHub上的一个小例子项目,称为该演示如何使用Xcode的工作区使用iPad的项目和OS X项目预加载的核心数据的数据PromNight。这使用了两个应用程序之间共享的对象模型,这有助于在预加载时保持更改同步。
核心数据使用后备存储,它本质上是一个sqlite数据库(或者,在Mac OS上,可选地是一个XML文件)。您应该简单地将该文件添加到您的应用程序捆绑包中,然后将其发布到应用程序中至于获取数据到数据库中,这里就是我会做:
我不会手工创建sqlite文件,因为Core Data在后台执行一些“巫术”操作,并且可能会破坏sqlite。另外,我见过开发人员使用多个目标。为进口。这样,他们可以在有条件的编译器中编写代码,而不必担心项目维护问题。例如:
#ifdef kImportTarget
//run core data import
#else
// run the Core Data stack setup from an existing file
#endif
+1为Ray Wenderlich。 – Moshe