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

Core data 在子上下文中创建的托管对象未反映在主线程中,core-data,Core Data,我有一个moc(self.managedObjectContext),它是用NSMainQueueConcurrencyType创建的 现在,对于这样调用的方法- ManagedObjectType1 *obj1 = [self createAnObject]; createAnObject的实现是- - (ManagedObjectType1 *) createAnObject { NSManagedObjectContext *childContext = [[NSManagedObje

我有一个moc(self.managedObjectContext),它是用NSMainQueueConcurrencyType创建的

现在,对于这样调用的方法-

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,但也没有帮助。

这很有效。但这是一个好方法吗

- (ManagedObjectType1 *) createAnObject {

__block ManagedObjectType1 *obj1;

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

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

return obj1
}

此外,我必须在外部范围内(而不是在这个方法中)创建childContext。否则,在释放childContext时会出现奇怪的问题,返回的对象(obj1)会为其所有属性返回nil,但不会为其自身返回nil。