iOS Core Data保存上下文错误

时间:2014-11-22 18:27:34

标签: ios core-data

我试图使用核心数据将数据插入数据库:

+ (BOOL)insertQuestionnaireObject:(Questionnaire *)questionnaireObject withError:(NSError **)error
{
    __block BOOL result = NO;

    [self.managedObjectContext performBlockAndWait:^{

        Questionnaire *questionnaireManagedObject = [self entityToInsertWithName:@"Questionnaire"];

        if (questionnaireManagedObject)
        {
            [self prepareForInsertQuestionnaireManagedObject:questionnaireManagedObject withQuestionnaireObject:questionnaireObject];

            result = [self saveContextWithError:error];
        }
    }];

    return result;
}

我正在保存上下文:

+ (BOOL)saveContextWithError:(NSError **)error
{
    BOOL result = YES;

    if (![self.managedObjectContext save:error])
    {
        result = NO;
    }

    return result;
}

首先看插入方法正常工作。关于保存上下文方法我也说不出来。它在行if (![self.managedObjectContext save:error])中循环(为什么它应该?)并退出而不会遇到崩溃或返回错误的行return result;。但它将2x对象保存到数据库而不是1.这些事情从iOS 8和方法performBlockAndWait使用开始发生。我该如何解决?

1 个答案:

答案 0 :(得分:0)

可能是因为您试图通过在类方法中调用self.managedObjectContext来访问实例变量。尝试将类方法转换为实例方法,或者将self.managedObjectContext作为参数传递给类方法。