1

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

我首先遵循了命令行实用程序方法,请参见此处这一直有效,直到我导入 .sqlite 文件并尝试编辑该persistentStoreCoordinator方法-我使用的是 a ,因此在我UIManagedDocument的方法中没有方法-此页面引用“在某些情况下,您不必编写任何代码来加载模型。如果您在 Mac OS X 上使用基于文档的应用程序,它会为您管理查找和加载应用程序模型的任务。”persistenStoreCoordinatorAppDelegateNSPersistentDocument

然后,我尝试根据这个 StackOverFlow 问题UIManagedDocument从模拟器中的应用程序的工作版本中复制它, 这似乎有效,只是它是空的,因此我的表也是。这正是这里提出的问题,但对该问题的回答让我重新开始修改我没有的方法。persistentStoreNSPersistentStoreCoordinator

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

关于如何让它工作的任何建议?

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

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

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

4

1 回答 1

0

您可以通过以下方式访问持久存储协调器parentContext

document.managedObjectContext.parentContext.persistentStoreCoordinator

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

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

但是文档中对该方法的讨论并没有很好地解释要做什么。也许您可以覆盖它并查看堆栈中已创建和尚未创建的对象,可能有一个已初始化的协调器附加到父上下文供您配置。类似名称的方法的文档NSPersistentDocument是这样的,所以也许UIManagedDocument也是。?

于 2012-07-15T07:30:00.247 回答