我试图使用核心数据将数据插入数据库:
+ (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
使用开始发生。我该如何解决?
答案 0 :(得分:0)
可能是因为您试图通过在类方法中调用self.managedObjectContext
来访问实例变量。尝试将类方法转换为实例方法,或者将self.managedObjectContext
作为参数传递给类方法。