Multithreading 带有MagicalRecord和NSURL请求的NSOperationQueues
我对MagicalRecord、NSOperationsQueues和NSURLRequests有问题 我得到了一个模型,它通过MagicalRecord处理从CoreData获取的数据。这很好,但我希望有一个后台进程,通过NSURLRequest通过API从web获取数据。这是主要问题。我必须将Multithreading 带有MagicalRecord和NSURL请求的NSOperationQueues,multithreading,core-data,nsurlrequest,nsoperationqueue,magicalrecord,Multithreading,Core Data,Nsurlrequest,Nsoperationqueue,Magicalrecord,我对MagicalRecord、NSOperationsQueues和NSURLRequests有问题 我得到了一个模型,它通过MagicalRecord处理从CoreData获取的数据。这很好,但我希望有一个后台进程,通过NSURLRequest通过API从web获取数据。这是主要问题。我必须将NSURLConnection上的scheduleInRunLoop:forMode设置为[连接scheduleInRunLoop:[NSRunLoop mainlunloop]forMode:NSDe
NSURLConnection
上的scheduleInRunLoop:forMode
设置为[连接scheduleInRunLoop:[NSRunLoop mainlunloop]forMode:NSDefaultRunLoopMode]代码>
从我的模型到NSOperationQueue的回调现在由主线程处理,一切正常
我想通过MagicalRecord将获取的资源保存到CoreData。我从我的NSOperationQueue
在start
方法中设置了我的[NSManagedObjectContext MR_contextForCurrentThread]
,以处理从NSOperationQueue在当前线程中的保存
我现在面临的主要问题是,我使用一个完成块调用[self.localContent MR_saveToPersistentStoreWithCompletion:
,等待CoreData将其保存到PersistentStore
但此时,从未调用完成块,我无法更新NSOperationQueue以完成
在这一点上我到底做错了什么
如果我将其保存在defaultContext中,我的应用程序会随机崩溃,并出现以下语句:
[NSManagedObjectContext(MagicalSaves)
MR_saveWithOptions:completion:][u block_invoke3致命异常
NSGenericeException
*集合在枚举时发生了变异
NSOperation低优先级并发限制队列崩溃
-[NSManagedObjectContext(\u NSInternalChangeProcessing)\u processRecentChanges:]
EXC_坏访问
我知道这是因为在同一个上下文中访问和保存同一时间,但我不想用它来解决这个问题
我使用的是MagicalRecord的最新版本,由于您的描述有限且缺乏实际代码,我所能提供的只是您正在从另一个线程中修改您的集合。最可能的情况是,您有多个NSO操作使用完全相同的数据集,并且共享相同的托管对象上下文。当一个线程保存时,上下文在一个线程上更新,从而将集合标记为已修改。然后另一个线程进入,下一次访问触发此错误。您需要确定一次触发的操作数,确保所有操作都有一个上下文,并且所有操作都不共享一个上下文