2010-04-17 65 views
0

我有一个应用程序,它结合了线程和CoreData。NSManagedObjectMergeError错误的原因[NSManagedObjectContext保存:]

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

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

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

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

什么是最简单的方法来消除这种错误,仍然独立下载文件?

回答

3

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

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

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