Core Data MagicalRecord在线程中合并MOC

时间:2012-07-27 08:56:08

标签: cocoa core-data magicalrecord

我使用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);

    }];

}

第一个问题是什么?为什么它不起作用而且这些变化没有合并?

1 个答案:

答案 0 :(得分:0)

关于不合并变化的简单事实是我的时间有限。我尝试理解并验证所有拉入请求,并且作为一个单独的商店意味着我的开源(免费,免费,非付费)工作的时间现在更加有限。但是,我认为该修复程序最终被合并,它在提交历史中并不明显。

至于为什么它首先不起作用,我的预感是contextForCurrentThread方法返回了一些无用的东西。 saveInBackground每次调用时都会创建一个新的上下文,为您提供一个新的工作区域。这是我认为的主要区别。