我使用MagicalRecord(https://github.com/magicalpanda)
这不起作用(没有诋毁MOC)
- (void) foo {
NSBlockOperation * operation = [NSBlockOperation blockOperationWithBlock:^{
NSManagedObjectContext * localContext = [NSManagedObjectContext MR_contextForCurrentThread];
// parsing and core data operation on localContext here, savin objectIDs
[localContext MR_saveNestedContexts];
[[NSOperationQueue mainQueue] addOperationWithBlock:^(){
onParseFinished(parsedItemObjectIDs);
}];
}];
[self.operationQueue addOperation:operation];
}
必须用它替换它(另外应用FIX https://github.com/magicalpanda/MagicalRecord/pull/221)
- (void) foo {
__block NSMutableArray * parsedItemsObjectIDs;
__block Class parsedItemsClass = [NSObject class];
[MagicalRecord saveInBackgroundWithBlock:^(NSManagedObjectContext *localContext){
// parsing and core data operation on localContext here, savin objectIDs
...
} completion:^(void){
onParseFinished(parsedItemsObjectIDs);
}];
}
第一个问题是什么?为什么它不起作用而且这些变化没有合并?
答案 0 :(得分:0)
关于不合并变化的简单事实是我的时间有限。我尝试理解并验证所有拉入请求,并且作为一个单独的商店意味着我的开源(免费,免费,非付费)工作的时间现在更加有限。但是,我认为该修复程序最终被合并,它在提交历史中并不明显。
至于为什么它首先不起作用,我的预感是contextForCurrentThread方法返回了一些无用的东西。 saveInBackground每次调用时都会创建一个新的上下文,为您提供一个新的工作区域。这是我认为的主要区别。