【问题标题】:Core Data MagicalRecord merging MOCs in threadsCore Data MagicalRecord 在线程中合并 MOC
【发布时间】:2012-07-27 08:56:07
【问题描述】:

我正在使用 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];
}

必须用这个替换它(还应用了修复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);

    }];

}

第一个有什么问题?为什么它不起作用并且没有合并更改?

【问题讨论】:

    标签: cocoa core-data magicalrecord


    【解决方案1】:

    不合并更改的简单事实是我的时间有限。我试图理解和验证所有进来的拉取请求,作为一个人的商店意味着我在开源(免费、免费、不付费)工作上的时间现在更加有限。但是,我相信修复程序最终会被合并,只是从提交历史中看不出来。

    至于为什么它一开始就不起作用,我的直觉是 contextForCurrentThread 方法返回了一些没有用的东西。每次调用 saveInBackground 时都会创建一个新的上下文,为您提供一个新的工作区。这是我认为的主要区别。

    【讨论】:

      猜你喜欢
      • 2011-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多