在ios7中保存太多项目时,NSManagedObjectContext保存失败?

时间:2013-11-27 23:26:27

标签: ios7 nsmanagedobjectcontext

我有以下两行代码几乎一直有效:

NSError *error = nil;
BOOL isSuccessful =[self.tempMoc save:&error];   // tempMoc is a NSManagedObjectContext

此代码在ios6模拟器,ios6物理设备和ios7模拟器上按预期工作。变量isSuccessful的计算结果为是。

但是,在ios7物理设备上,isSuccessful评估为NO。那是为什么?

在所提到的所有四种情况下,

错误始终为零。

有谁知道为什么会出现这种情况以及如何在ios7物理设备上获得成功评估为YES?

其他详细信息

经过更多调试后,我发现了一些东西。在上面tempMoc save之前,我运行了此代码:

- (void)saveCompatibilities:(NSArray *)objects {
    NSString *entityName = NSStringFromClass([Compatibility class]);

        for (NSDictionary *newObjectDict in objects) {
            Compatibility *object = [NSEntityDescription insertNewObjectForEntityForName:entityName inManagedObjectContext:self.tempMoc];
            object.prod1 = newObjectDict[@"prod1"]; // value is just the letter a
            object.prod2 = newObjectDict[@"prod2"]; // value is just the letter a

        }


    }

我注意到如果for循环中的迭代次数非常大,比如让我们说50 000个循环,那么我会遇到上面提到的ios7 isSuccessful == NO问题。如果只说20个循环,则isSuccessful评估为是。导致ios7 isSuccessful失败的循环次数因每次运行而不同。

我开始认为这是我设备的内存问题?

1 个答案:

答案 0 :(得分:1)

听起来像是一个记忆问题。尝试定期保存或内存压力。您还可以创建子上下文以保存在不同的线程上。