nsmanageobjectcontext.save在iOS7中停止工作

时间:2013-11-24 13:18:50

标签: nsmanagedobjectcontext

我继承的项目于2013年4月建成并推出,适用于ios 5.1,ios 6.0和ios 6.1。

然而,我刚刚将应用程序安装到具有ios7.0的iphone上,但它无效。我查看了代码,我发现应用程序从Web下载了一些JSON数据,然后当它尝试运行以下3行代码时,在第二行之后“没有任何反应”。

NSError error = nil;
BOOL isSuccessful =[self.tempMoc save:&error];  // where tempMoc is a NSManagedObjectContext
NSLog(@"errrrrrr ----- %@ --- errrrrrr", error);

当我说没有任何反应时,我的意思是代码执行在第二行停止,并且该行之后没有代码被触发。我尝试在第二行放置断点,然后进入函数,但没有任何反应...... xcode之后没有向我显示任何新内容。我的模拟器中的应用程序也会挂起。

我尝试将项目的部署目标从ios6更改为ios7。再次,这没有产生任何影响。

接下来我该怎么做?

其他说明

我一直在阅读其他堆栈溢出答案,有些人说悬挂[NSManagedObjectContext save]可能是一个线程问题。我不确定如何确认我的问题是否是一个线程问题。我知道只有一个地方调用[NSManagedObjectContext save],这就是事情悬空的地方。我试过放

[self.tempMoc.persistentStoreCoordinator lock];

在实例化self.tempMoc后,但没有效果。

1 个答案:

答案 0 :(得分:0)

我想出了这个问题。

确实有多个线程操纵NSManagedObjectContext导致hte save函数挂起。

我的解决方案是重写代码以摆脱所有额外的线程。我只剩下主线程,这解决了这个问题。