【发布时间】:2011-05-05 13:38:18
【问题描述】:
我正在使用带有单个 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,则会发生错误。有谁知道为什么会这样?
【问题讨论】:
-
感谢您的更新!我面临同样的问题,这解决了它。我现在使用
refreshObject在保存上下文后更新对象,并且不再出现冲突。
标签: core-data merge conflict nsmanagedobjectcontext