在核心数据应用程序中更改数据时,会出现错误消息:
无法保存文档“xyz.sqlite”。该文件已经存在 由另一个应用程序更改。
事实上,没有其他应用程序改变了数据。我另外观察到,撤消管理工作不顺利。
可能我不应该为一个实体使用绑定到managedObjectContext的多个(唯一的?)Arraycontroller?
在我的应用程序中,我使用经典的主 - 细节关系设置,每个实体有2个控制器 - 以及2个表视图来显示数据。
但是,此外我想提供所有细节的列表,我可以在哪里更改主人。因此,我正在使用绑定到同一个managedObjectContext的另一个Array控制器。这个没有设置为主的内容,因此它将包含所有细节对象。使用此方法可以轻松管理关联的tableview中的关系(通过简单地将“selected Object”绑定到详细信息的关系) - 但它似乎会影响应用程序。
还有其他人遇到这个问题吗?欢迎任何想法!
答案 0 :(得分:0)
Mac上的核心数据从未能很好地处理基础数据的多个程序化更改,尤其是在基于文档的应用程序中。例如,请参阅autosavesInPlace causes New Document save to fail。
我认为您通过对所有观看使用相同的MOC来走上正轨。如果使用多个MOC,则存在使视图之间的数据不同步的风险。在阵列控制器上使用Cocoa绑定应该保持所有内容同步。
是否存在您在后台对数据进行编程更改的情况?那些应该在viewContext
的孩子身上完成。或者采取其他措施确保他们同步到viewContext
。