[NSManagedObjectContext save:]上NSManagedObjectMergeError错误的原因

时间:2010-04-17 00:55:21

标签: iphone cocoa multithreading core-data

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

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

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

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

我认为由于多个进程尝试保存到persistentStoreCoordinator同时下载大约在同一时间完成,因此失败了。

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

1 个答案:

答案 0 :(得分:3)

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

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

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