在子上下文中创建的托管对象未反映在主线程中

时间:2014-07-11 15:11:04

标签: core-data

我有一个用NSMainQueueConcurrencyType创建的moc(self.managedObjectContext)。

现在,对于以这种方式调用的方法 -

ManagedObjectType1 *obj1 = [self createAnObject];

createAnObject的实现是 -

- (ManagedObjectType1 *) createAnObject {

NSManagedObjectContext *childContext = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSMainQueueConcurrencyType];
childContext.parentContext = self.managedObjectContext;

ManagedObjectType1 *obj1 = //..initialize in childContext

return obj1
}

方法返回后(在调用它的地方),obj1为nil,但obj1在返回时在方法实现中有数据。

这里可能出现什么问题。我尝试使用NSPrivateQueueConcurrencyType分配childContext,但这也没有帮助。

1 个答案:

答案 0 :(得分:0)

这很有用。但这是一个很好的方法。

- (ManagedObjectType1 *) createAnObject {

__block ManagedObjectType1 *obj1;

[self.managedObjectContext performBlockAndWait:^{
NSManagedObjectContext *childContext = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSPrivateQueueConcurrencyType];
childContext.parentContext = self.managedObjectContext;

obj1 = //..initialize in childContext
}];

return obj1
}