UIManagedDocument 的文档中简要提到了
为了支持异步数据写入,Core Data 实际上使用了一对嵌套的托管对象上下文。
这是特定于 UIManagedDocument 或 Core Data 的吗?
同一份文件还指出
如果合适,您可以将数据从后台线程直接加载到父上下文。
这是否意味着在下面的代码中
NSManagedObjectContext *moc = self.managedObjectContext;
[moc performBlock:^() {
Record *record = [NSEntityDescription
insertNewObjectForEntityForName:@"Record"
inManagedObjectContext:moc];
}];
我应该简单地将第一行替换为
NSManagedObjectContext *moc = self.managedObjectContext.parentContext;
做到这一点?
我想我也对直接使用这个父上下文在哪里“合适”感到困惑。我的意思是,这听起来已经像是 performBlock 用于将任务卸载到后台队列。为什么我需要弄乱父上下文?
如果有人为我澄清所有这些,我将不胜感激。