nsmanageobjectcontext.save在iOS7中停止工作
问题描述:
我继承的项目是在2013年4月建立并发布的,它完美适用于ios 5.1,ios 6.0和ios 6.1。nsmanageobjectcontext.save在iOS7中停止工作
但是我刚刚安装了应用程序到一个iPhone有ios7.0,它没有工作。我查看了代码,发现应用程序从网上下载了一些JSON数据,然后当它尝试运行以下3行代码时,第二行后面的“没有任何反应”。
NSError error = nil;
BOOL isSuccessful =[self.tempMoc save:&error]; // where tempMoc is a NSManagedObjectContext
NSLog(@"errrrrrr ----- %@ --- errrrrrr", error);
当我说什么都没有发生时,我的意思是代码执行停在第二行,并且该行之后没有任何代码被触发。我尝试在第二行放置一个断点,然后进入函数,但没有任何反应...... xcode之后没有向我显示任何新东西。我的模拟器中的应用程序也挂起。
我试着将我的项目的部署目标从ios6更改为ios7。再一次,这没有效果。
接下来应该做什么?
附加说明
我一直在看其他的堆栈溢出的答案,有的人说一挂[保存的NSManagedObjectContext]可能是一个线程问题。我不知道如何确认我的问题是否是线程问题。我知道只有一个地方调用了[NSManagedObjectContext保存],这是一个地方悬挂的地方。我试图把一个
[self.tempMoc.persistentStoreCoordinator lock];
实例self.tempMoc之后,但没有任何效果。
答
我想通了这个问题。
确实是多个线程操纵导致hte保存函数挂起的NSManagedObjectContext。
我的解决方案是重写代码以摆脱所有额外的线程。我只剩下主线程,这解决了这个问题。