预加载核心数据库UIManagedDocument黑色

嗨支持专家…我正在写我的第一个iPad应用程序,并有一个工作testing版副本,分析一个XML文件,以创build一个UIManagedDocument核心数据数据库在应用程序启动。 然而,这需要很长时间,我想这样做一旦脱机,并包括最初的数据直接到我的应用程序包。 毋庸置疑,我打了一堵墙试图让它工作。

我第一次按照命令行实用工具的方法看到这里这工作,直到我导入.sqlite文件,并试图编辑persistentStoreCoordinator方法 – 我使用UIManagedDocument ,所以没有在我的AppDelegatepersistenStoreCoordinator方法 – 本页报价“在某些情况下,您不必编写任何代码来加载模型,如果您在Mac OS X上使用基于文档的应用程序,则NSPersistentDocumentpipe理为您查找和加载应用程序模型的任务。

然后我尝试从模拟器中的应用程序的工作版本复制UIManagedDocument按照此StackOverFlow问题这似乎工作,但persistentStore是空的,因此我的表也是。 这正是这里所要问的问题,但是对这个问题的回答让我马上回到修改我没有的NSPersistentStoreCoordinator方法。

我添加了一个testingNSFetchRequest到我的代码中,我从应用程序包中复制UIManagedDocument到文档目录 – 所以我知道我的应用程序包中的UIManagedDocument是空的。 我已经尝试拖放从发现者和应付使用terminal – persistentStore文件似乎被正确地移动和大小106 KB,但我仍然在我的应用程序中得到一个空的数据库。

任何build议如何让这个工作?

我需要使用configurePersistenStoreCoordinatorForURL:ofType:modleConfiguration:StoreOptions:error:根据UIManagedDocument类参考 – 如果是的话,我该怎么做呢?

我是否需要将一些核心数据方法添加到我的AppDelegate中,以便我可以修改persistenStoreCoordinator方法 – 如果有的话,该方法还需要做什么?

我是否更好地使用我的命令行创build的.sqlite数据库或persistentStore UIManagedDocument似乎使用?

您可以通过parentContext访问持久存储协调器:

 document.managedObjectContext.parentContext.persistentStoreCoordinator 

或者,如果你的意思是你没有访问构build核心数据栈的时候构build持久化存储的方法,那么看起来像这个钩子就是为了这个目的而设置的(正如你所提到的那样):

覆盖configurePersistentStoreCoordinatorForURL:ofType:modelConfiguration:storeOptions:error:定制加载或创build持久性存储。

但是在文档中对这种方法的讨论并不能解释如何做得很好。 也许你可以覆盖它,看看堆栈中还没有创build什么对象,可能有初始化的协调器连接到父上下文,供你configuration。 在NSPersistentDocument上类似命名的方法的文档是这样的,所以也许UIManagedDocument也是。