繁体   English   中英

预加载核心数据数据库因UIManagedDocument而变黑

[英]Pre load core data database coming up black with UIManagedDocument

嗨,支持专家……我正在编写我的第一个iPad应用程序,并且有一个有效的Beta副本,该副本在应用程序启动时会解析XML文件以创建UIManagedDocument Core Data DB。 但是,这需要很长时间,因此我想离线执行一次并将初始数据直接包含到我的应用程序包中。 不用说,我正在碰壁,试图使其正常工作。

我首先遵循了命令行实用程序方法,请参见此处 。在导入.sqlite文件并尝试编辑persistentStoreCoordinator方法之前,此方法persistentStoreCoordinator有效-我使用的是UIManagedDocument ,因此AppDelegate没有persistenStoreCoordinator方法- 此页面引用“在某些情况下,您无需编写任何代码即可加载模型。如果在Mac OS X上使用基于文档的应用程序,则NSPersistentDocument为您管理查找和加载应用程序模型的任务。”

然后,我按照这个StackOverFlow问题尝试从模拟器中的应用程序的工作版本中复制UIManagedDocument 。这似乎可行,除了persistentStore为空,因此我的表也是如此。 这正是这里提出的问题但是对此问题的回答使我直接回到修改我没有的NSPersistentStoreCoordinator方法的位置。

我在代码中添加了一个测试NSFetchRequest在其中我将UIManagedDocument从应用程序捆绑包复制到了文档目录-因此,我知道我的应用程序捆绑包中的UIManagedDocument为空。 我尝试使用终端从finder拖放并应对-持久存储文件似乎已正确移动,大小为106 KB,但我的应用程序中仍然有一个空的数据库。

关于如何使它起作用的任何建议?

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

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

我是否最好使用命令行实用程序创建的.sqlite DB或persistentStore UIManagedDocument似乎使用的数据库?

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

document.managedObjectContext.parentContext.persistentStoreCoordinator

或者,如果您只是表示您在构建核心数据堆栈时无权访问用于构建持久性存储的方法,那么看起来这就是为此目的而设计的钩子(如您所述):

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM