【发布时间】:2015-10-05 13:13:35
【问题描述】:
我有一个类似的方法:
- (void)handleUpdate
{
dispatch_sync(dispatch_get_main_queue(), ^{
NSArray *objectIDs = [self.objectsInMainContext valueForKeyPath:@"objectID"];
[self.privateContext performBlockAndWait: ^{
// Some processing
}];
});
}
我所说的mainContext 关联到主队列,privateContext 关联到私有队列并且是mainContext 的子级。这个方法是从privateContext的私有队列中调用的,到达performBlockAndWait:调用的时候不是nil,但是执行没有进入block,也没有到达这个方法之后的任何代码...
我会在这里遗漏什么?
提前致谢
编辑:我在 Xcode 中没有出错,我在 performBlockAndWait: 块内的代码中设置的断点以及在此方法调用之后根本没有到达。
编辑 2:我更正了代码 sn-p,我访问的不是mainContext,而是与mainContext 关联的对象数组。
【问题讨论】:
-
当您已经在私有上下文中时,为什么要进入主上下文以获取对象 ID 的任何具体原因?
-
@Mundi 抱歉,那行是错误的...我编辑问题
-
@Mundi 我需要将我在
mainContext中获得的对象传递给这个子上下文来执行我的更新。
标签: ios core-data concurrency nsmanagedobjectcontext