Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.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
Macos 核心数据提高了;该文件已被另一个应用程序更改;_Macos_Core Data - Fatal编程技术网

Macos 核心数据提高了;该文件已被另一个应用程序更改;

Macos 核心数据提高了;该文件已被另一个应用程序更改;,macos,core-data,Macos,Core Data,在“我的核心数据”应用程序中更改数据时,会出现一条错误消息: 无法保存文档“xyz.sqlite”。该文件已被删除 被另一个应用程序更改 事实上,没有其他应用程序更改了数据。此外,我还观察到,撤消管理在当时并没有很好地工作 可能,我不应该为一个实体使用多个(唯一?)绑定到managedObjectContext的Arraycontroller 在我的应用程序中,我使用经典的主-细节关系设置,每个实体有2个控制器,2个表视图来显示数据 但是,除此之外,我想提供一个所有细节的列表,在那里我可以更改主

在“我的核心数据”应用程序中更改数据时,会出现一条错误消息:

无法保存文档“xyz.sqlite”。该文件已被删除 被另一个应用程序更改

事实上,没有其他应用程序更改了数据。此外,我还观察到,撤消管理在当时并没有很好地工作

可能,我不应该为一个实体使用多个(唯一?)绑定到managedObjectContext的Arraycontroller

在我的应用程序中,我使用经典的主-细节关系设置,每个实体有2个控制器,2个表视图来显示数据

但是,除此之外,我想提供一个所有细节的列表,在那里我可以更改主控。因此,我正在使用另一个绑定到同一managedObjectContext的阵列控制器。这一个没有将内容集设置为主对象,因此它将具有所有细节对象。使用这种方法可以轻松管理关联tableview中的关系(通过简单地将“选定对象”绑定到细节的关系),但它似乎会影响应用程序


还有其他人面临这个问题吗?欢迎任何意见

Mac上的核心数据从未很好地处理对底层数据的多个编程更改,尤其是在基于文档的应用程序中。例如,请参见

我认为你在正确的轨道上使用相同的主运行中心为你所有的意见。如果使用多个MOC,则可能会导致视图之间的数据不同步。在阵列控制器上使用Cocoa绑定应该使所有内容保持同步


是否存在对后台数据进行编程更改的情况?这些可能应该在
viewContext
的子级中完成。或者采取其他步骤确保它们同步到Mac上的
viewContext

核心数据从未很好地处理对基础数据的多个编程更改,尤其是在基于文档的应用程序中。例如,请参见

我认为你在正确的轨道上使用相同的主运行中心为你所有的意见。如果使用多个MOC,则可能会导致视图之间的数据不同步。在阵列控制器上使用Cocoa绑定应该使所有内容保持同步


是否存在对后台数据进行编程更改的情况?这些可能应该在
viewContext
的子级中完成。或者采取其他步骤确保它们与
viewContext

同步,因此我将研究viewContext,感谢您的提示-以前从未遇到过这种情况。是的,我也在后台更改数据。但是,即使我只是使用TableView(连接到控制器)来更改某些内容,撤消和保存也是相当混乱的。顺便说一句,我观察到了一个非常有趣的效果:如果我在一个视图中更改数据,我可以看到另一个视图中的更改直接产生影响。每个实体只有一个阵列控制器!其他阵列控制器现在绑定到fetchRequest,而不是managedObjectContext。现在撤销工作正常。但过了一段时间,我仍然收到“文件已被另一个应用程序更改”的消息。有什么想法吗?我在8.3.3中仍然得到这个结论,我必须修改我以前的结论。一个实体可以有多个控制器。我成功地做到了。仅当我以编程方式更改项目时,才会出现此消息。解决方案是“告诉”控制器发生了变化。而不是“[theAccount setInternalAccount:accountVal];”用法:[账户将更改价值forkey:@“内部账户”];[theAccount setInternalAccount:accountVal];[theAccount didChangeValueForKey:@“internalAccount”]`因此,我将研究viewContext,感谢您的提示-以前从未遇到过这一点。是的,我也在后台更改数据。但是,即使我只是使用TableView(连接到控制器)来更改某些内容,撤消和保存也是相当混乱的。顺便说一句,我观察到了一个非常有趣的效果:如果我在一个视图中更改数据,我可以看到另一个视图中的更改直接产生影响。每个实体只有一个阵列控制器!其他阵列控制器现在绑定到fetchRequest,而不是managedObjectContext。现在撤销工作正常。但过了一段时间,我仍然收到“文件已被另一个应用程序更改”的消息。有什么想法吗?我在8.3.3中仍然得到这个结论,我必须修改我以前的结论。一个实体可以有多个控制器。我成功地做到了。仅当我以编程方式更改项目时,才会出现此消息。解决方案是“告诉”控制器发生了变化。而不是“[theAccount setInternalAccount:accountVal];”用法:[账户将更改价值forkey:@“内部账户”];[theAccount setInternalAccount:accountVal];[theAccount didChangeValueForKey:@“internalAccount”]`