使用UIManagedDocument预加载核心数据数据库为黑色

时间:2012-07-15 04:00:12

标签: ios core-data preload uidocument nspersistentstore

嗨,支持专家...... 我正在编写我的第一个iPad应用程序,并且有一个可用的测试版副本,用于解析XML文件以在应用启动时创建UIManagedDocument核心数据数据库。然而,这需要很长时间,我想离线一次,并将初始数据直接包含在我的应用程序包中。 毋庸置疑,我正试图让它发挥作用。

我首先遵循命令行实用程序方法,请参阅here这一直有效,直到我导入.sqlite文件并尝试编辑persistentStoreCoordinator方法 - 我正在使用UIManagedDocument等等我的persistenStoreCoordinator - this page引用中没有AppDelegate方法“在某些情况下,您不必编写任何代码来加载模型。如果使用基于文档的在Mac OS X上的应用程序NSPersistentDocument管理为您查找和加载应用程序模型的任务。“

然后,我按照this StackOverFlow question尝试在模拟器中从我的应用的工作版本中复制UIManagedDocument 这似乎有效,只是persistentStore是空的,因此我的桌子也是。这正是here提出的问题,但是对该问题的回答让我回过头来修改我没有的NSPersistentStoreCoordinator方法。

我在我的代码中添加了一个测试NSFetchRequest,我将我的应用包中的UIManagedDocument复制到了文档目录中 - 所以我知道我的应用包中的UIManagedDocument为空。我尝试使用终端从finder拖放和复制 - persistentStore文件似乎被正确移动并且大小为106 KB但我仍然在我的应用程序中获得一个空数据库。

有关如何使其发挥作用的任何建议吗?

我是否需要根据configurePersistenStoreCoordinatorForURL:ofType:modleConfiguration:StoreOptions:error:班级参考使用UIManagedDocument - 如果是这样,我该怎么做?

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

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

1 个答案:

答案 0 :(得分:0)

您可以通过parentContext

访问持久性商店协调员
document.managedObjectContext.parentContext.persistentStoreCoordinator

或者,如果您只是意味着在构建核心数据堆栈时无法访问构建持久存储的方法,那么它看起来就像是用于此目的的钩子(正如您所提到的) :

  

覆盖configurePersistentStoreCoordinatorForURL:ofType:modelConfiguration:storeOptions:error:以自定义加载或创建持久性存储。

但是文档中对该方法的讨论并没有解释如何做得很好。也许您可以覆盖它并查看堆栈中是否已经创建了哪些对象,可能还有一个初始化协调器附加到父上下文供您配置。 NSPersistentDocument上类似命名的方法的文档是这样的,所以也许UIManagedDocument也是。?

相关问题