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