Core data 核心数据与用于核心数据的单个MOC和主线程存在合并冲突

Core data 核心数据与用于核心数据的单个MOC和主线程存在合并冲突,core-data,merge,conflict,nsmanagedobjectcontext,Core Data,Merge,Conflict,Nsmanagedobjectcontext,我将核心数据与单个NSManagedObjectContext一起使用,并在主线程上对核心数据执行所有操作。错误描述中给出的新行和旧行是相同的,我希望有人能解释为什么我会遇到合并冲突。将合并策略设置为覆盖会导致应用程序在模拟器中运行到高CPU并变得无响应 但是,当我尝试更新一个实体中的托管对象时,应用程序崩溃,出现以下错误: NSMergeConflict (0x7144390) for NSManagedObject (0x7225db0) with objectID '0x721c0a0 &

我将核心数据与单个NSManagedObjectContext一起使用,并在主线程上对核心数据执行所有操作。错误描述中给出的新行和旧行是相同的,我希望有人能解释为什么我会遇到合并冲突。将合并策略设置为覆盖会导致应用程序在模拟器中运行到高CPU并变得无响应

但是,当我尝试更新一个实体中的托管对象时,应用程序崩溃,出现以下错误:

NSMergeConflict (0x7144390) for NSManagedObject (0x7225db0) with objectID '0x721c0a0 <x-coredata://94349DC2-C441-4102-9C65-60737E940135/Locations/p1>' with oldVersion = 2 and newVersion = 3 and 
old cached row = {\n    AccountInfo = \"0x721bae0 <x-coredata://94349DC2-C441-4102-9C65-60737E940135/Account/p1>\";\n    City = \"<null>\";\n    Country = \"Russian Federation\";\n    EntryStatusId = \"<null>\";\n    ExitStatusId = \"<null>\";\n    IsCorporateLocation = 1;\n    IsVisible = 1;\n    Latitude = 50;\n    LocationId = 10003;\n    Longitude = 40;\n    Name = \"Test Location\";\n    Radius = 304;\n    State = \"Province of Voronezh\";\n    Street = \"<null>\";\n    Units = METER;\n    Zip = \"<null>\";\n} and 
new database row = {\n    AccountInfo = \"0x7144560 <x-coredata://94349DC2-C441-4102-9C65-60737E940135/Account/p1>\";\n    City = \"<null>\";\n    Country = \"Russian Federation\";\n    EntryStatusId = \"<null>\";\n    ExitStatusId = \"<null>\";\n    IsCorporateLocation = 1;\n    IsVisible = 1;\n    Latitude = 50;\n    LocationId = 10003;\n    Longitude = 40;\n    Name = \"Test Location\";\n    Radius = 304;\n    State = \"Province of Voronezh\";\n    Street = \"<null>\";\n    Units = METER;\n    Zip = \"<null>\";\n}

更新:如果在更新每个对象后保存MOC,则不会发生错误,但如果更新所有对象,然后保存MOC,则会发生错误。有人知道为什么会发生这种情况吗?

这个错误表明您实际上有两个不同的上下文。只有当两个或多个上下文写入同一存储时,才能获得合并


我建议在每次保存之前记录上下文,无论您在何处执行保存,都要确保只有一个活动上下文

错误表明您实际上有两个不同的上下文。只有当两个或多个上下文写入同一存储时,才能获得合并


我建议在每次保存之前记录上下文,无论您在何处执行保存,都要确保只有一个活动上下文

可以让核心数据自动处理这些冲突,而不是抛出异常。请参阅本文:

可以让核心数据自动处理这些冲突,而不是抛出异常。查看此帖子:

这是我尝试的第一件事,尽管我通过单例访问MOC,但没有看到其他MOC被记录。事实上,我对对象进行了清理,然后运行了两次相同的代码。第一次插入对象时一切正常,但第二次更新时,应用程序因相同的错误崩溃。这是我尝试的第一件事,尽管我通过单例访问MOC,但没有看到另一个MOC被记录。事实上,我对对象进行了清理,然后运行了两次相同的代码。第一次插入对象时一切正常,但第二次更新时,应用程序因相同错误崩溃。根据常见问题解答,您需要披露提供的链接指向您的网站。此外,请总结链接的内容,而不仅仅是提供链接。根据常见问题解答,您需要披露提供的链接进入您的网站。另外,请总结链接的内容,而不仅仅是提供链接。谢谢更新!我也面临同样的问题,这就解决了。保存上下文后,我现在使用refreshObject更新对象,不再显示冲突。感谢更新!我也面临同样的问题,这就解决了。保存上下文后,我现在使用refreshObject更新对象,不再显示冲突。