【发布时间】:2014-03-05 18:31:34
【问题描述】:
我已经阅读了一些文章,但仍然没有得出结论。假设我有一个嵌套的NSManagedObjectContext 像
BackgroundContext -> NSPrivateQueueConcurrencyType
|
child
v
MianContext -> NSMainQueueConcurrencyType
|
child
v
TemporaryContext -> NSPrivateQueueConcurrencyType
问题 1:我是否仍要观察 NSManagedObjectContextObjectsDidChangeNotification 并合并更改,例如:
- (void)managedObjectContextDidChanged:(NSNotification *)notification{
NSManagedObjectContext *currentContext = [notification object];
NSManagedObjectContext *mainConetext = [self mainThreadContext];
if (currentContext != mainConetext) {
[mainConetext performBlock:^{ //performBlock in notification
[mainConetext mergeChangesFromContextDidSaveNotification:notification];
}];
}
}
事实上我已经尝试删除这段代码,当我在mainContext 上执行提取时它表现良好,但我感到困惑的是 mainContext 如何合并子上下文的变化,因为我感觉我在这里做错了什么。
问题 2:我应该使用嵌套的performBlock 来合并更改吗??
[temporaryContext performBlock:^(
//do some thing
[mainContext performBlock:^(
// merge changes
)];
)];
【问题讨论】: