Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Core data UIManagedDocument的迁移问题_Core Data_Core Data Migration_Uimanageddocument - Fatal编程技术网

Core data UIManagedDocument的迁移问题

Core data UIManagedDocument的迁移问题,core-data,core-data-migration,uimanageddocument,Core Data,Core Data Migration,Uimanageddocument,我开始在我的应用程序中使用CoreData,这是在斯坦福CS193P关于使用iOS 5新的类UIManagedDocument的课程之后。这种方法本身非常简单,但我不知道如何处理我不断进行的模型修改。这就是我如何实例化UIManagedDocument对象(在appDelegate中,以便其他所有类都可以使用它): 我遇到的问题是,每次更改.xcdatamodel的一点点内容时,我都无法获取以前存储在文档中的所有内容,也无法创建任何新实例。事实上,这样做会产生以下异常: *** Terminat

我开始在我的应用程序中使用CoreData,这是在斯坦福CS193P关于使用iOS 5新的类UIManagedDocument的课程之后。这种方法本身非常简单,但我不知道如何处理我不断进行的模型修改。这就是我如何实例化UIManagedDocument对象(在appDelegate中,以便其他所有类都可以使用它):

我遇到的问题是,每次更改.xcdatamodel的一点点内容时,我都无法获取以前存储在文档中的所有内容,也无法创建任何新实例。事实上,这样做会产生以下异常:

*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'This NSPersistentStoreCoordinator has no persistent stores.  It cannot perform a save operation.'
我认为设置托管文档的“options”属性可以解决这个问题,但显然这还不够。
有人能帮忙吗?找不到其他真正符合我精确需求的问题。

在修改核心数据模型之前,您应该“添加模型版本”

一,。 选择原始模型文件。(例如YourProject.xcdatamodel)

二,。 “编辑器”->“添加模型版本…”。然后添加新的型号版本(例如2.0)

三,。 您将获得一个新的模型文件。(例如,YourProject 2.0.xcdatamodel)。修改它

四,。 更改当前模型版本。选择顶部的.xcdtatmodel文件->“视图”->“实用工具”->“显示文件检查器”。找到标记“Versioned Core Data Model”,并选择要修改的正确版本


这也困扰了我很长时间。希望这种方式能帮助你^^

你的问题有一个非常简单的解决方案。只需从模拟器或设备上擦除应用程序(触摸应用程序图标几秒钟,然后触摸应用程序图标开始摆动时出现的十字)。这样,Xcode将更新应用程序的UIManagedDocument。

确保没有将NSDocumentDirectory误键入为NSDocumentationDirectory

   NSURL *url = [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject];

NSDocumentDirectory是正确的

嗨。谢谢你的回答。看来是个好办法。无论如何,在遵循您的建议后,我一直遇到迁移问题:**由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因是:“无法将模型与名为“ManagedChild”的两个不同实体合并,其中ManagedChild是我模型中的一个实体。我发现了这一点,但它没有像我需要的那样使用samy UIManagedDocument方法……我遇到了同样的问题。所有文档都说添加“persistentstorepoptions”是正确的选择。但是我从UIManagedDocument中得到了一个零返回,并伴随着相同的错误消息。删除商店对我来说不是一个有效的选项,因为我支持一个已发布的应用程序。只是另一个数据点。。。我创建了一个通过UIManagedDocument初始化核心数据的示例项目,与我在应用程序中所做的完全相同,但该示例项目似乎迁移得很好(即使没有任何persistentStoreOptions)。如果应用程序已经在应用程序商店中,该怎么办。你显示了一个警报视图,并要求用户重新安装你的应用程序?我认为pH-k的答案是发问者需要的,因为他是在遵循一个教程,而不是在商店发布应用程序:)这对我没有帮助。它说持久存储不可用,但我显然拥有它!我也遵循了斯坦福CS193P,我也遇到了同样的错误。
   NSURL *url = [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject];