核心数据MagicalRecord合并MOCS在线程使用MagicalRecord(https://github.com/magicalpanda)
问题描述:
IAM核心数据MagicalRecord合并MOCS在线程使用MagicalRecord(https://github.com/magicalpanda)
这wasnt工作(不marging的MOCS)
- (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);
}];
}
请告诉我与第一个问题?为什么它不能正常工作,而且这些更改没有合并?
答
不合并更改的简单事实是我的时间是有限的。我尝试理解和验证所有进来的请求,并且作为一个人的商店意味着我的开源时间(免费,免费,不付费)工作时间更加有限。不过,我相信这个解决方案最终被并入了,但从提交历史来看,这并不明显。
至于为什么没有摆在首位的工作,我的预感是,contextForCurrentThread方法返回的东西是没有用的。 saveInBackground在每次调用新的工作区时会创建一个新的上下文。这是我相信的主要区别。