iOS Core Data 保存上下文错误

Posted

技术标签:

【中文标题】iOS Core Data 保存上下文错误【英文标题】:iOS Core Data save context error 【发布时间】:2014-11-22 18:27:33 【问题描述】:

我正在尝试使用 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;

Insert 方法乍一看工作正常。关于保存上下文方法,我不能说同样的话。它在if (![self.managedObjectContext save:error]) 行中循环(为什么它应该?)并退出而没有转到return result; 行,因为我们的崩溃或返回错误。但它将 2x 个对象保存到数据库而不是 1 个。这些事情从 ios 8 和方法 performBlockAndWaitusage 开始发生。我该如何解决?

【问题讨论】:

【参考方案1】:

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

【讨论】:

以上是关于iOS Core Data 保存上下文错误的主要内容,如果未能解决你的问题,请参考以下文章