[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:自动更新与否?