iphone - [NSManagedObjectContext save :] 上出现 NSManagedObjectMergeError 错误的原因

标签 iphone cocoa multithreading core-data

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

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

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

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

我认为它失败是由于多个进程试图同时保存到persistentStoreCoordinator,而下载大约在同一时间完成。

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

最佳答案

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

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

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

关于iphone - [NSManagedObjectContext save :] 上出现 NSManagedObjectMergeError 错误的原因,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2656805/

相关文章:

ios - 如何捕获在 iOS 模拟器中抛出的 NSError 实例

macos - 我可以使用自动布局根据标签大小调整窗口大小吗?

iphone - 平行阵列

multithreading - 我们可以在单线程程序中使用竞争条件吗?

java - 加速 Java 应用程序

iphone - iOS FBConnent 登录弹出问题

iphone - AFNetworking 预期内容类型错误

iphone - 叠加在 Streaming MPMoviePlayerController 之上

cocoa - 如何将数组 Controller 的 'remove' 与集合运算符绑定(bind)为内容

c++ - 带有定义参数的 Pthread