[NSManagedObjectContext 保存:] 上 NSManagedObjectMergeError 错误的原因

Posted

技术标签:

【中文标题】[NSManagedObjectContext 保存:] 上 NSManagedObjectMergeError 错误的原因【英文标题】:Reasons for NSManagedObjectMergeError error on [NSManagedObjectContext save:] 【发布时间】:2010-04-17 00:55:20 【问题描述】:

我有一个结合了线程和 CoreData 的应用程序。

我正在使用一个全局 NSPersistentStoreCoordinator 和一个主 NSManagedObjectContextModel

我有一个过程,我必须同时下载 9 个文件,所以我创建了一个对象来处理下载(每个单独的下载都有自己的对象)并将其保存到 persistentStoreCoordinator

[NSURLConnection connectionDidFinishLoading:] 方法中,我创建了一个新的NSManagedObject 并尝试保存数据(这也会将其与主managedObjectContext 合并)。

我认为它失败是由于多个进程在下载完成的同时尝试保存到persistentStoreCoordinator

消除此错误并仍然独立下载文件的最简单方法是什么?

【问题讨论】:

【参考方案1】:

NSManagedObjectContext 实例知道如何锁定NSPersistentStoreCoordinator。由于您已经为每个线程使用了一个 NSManagedObjectContext,这很可能不是问题所在。

知道您遇到的错误是什么会有所帮助。展开NSError 并查看它的-userInfo。如果 userInfo 字典包含键 NSDetailedErrors。与此键关联的值将是一个数组,您可以循环并查看其中的所有错误。这将有助于确定发生了什么。

错误很可能是简单的验证或缺少所需的值,与实际线程无关。

【讨论】:

以上是关于[NSManagedObjectContext 保存:] 上 NSManagedObjectMergeError 错误的原因的主要内容,如果未能解决你的问题,请参考以下文章

我应该啥时候保存上下文?

父/子 NSManagedObjectContext 不起作用

NSManagedObjectContext:自动更新与否?

NSManagedObjectContext:撤消保存操作?

声明 NSManagedObjectContext 时出错

CoreData 多 NSManagedObjectContext 保存通知说明