【问题标题】:Core Data and Magical Record saving核心数据和神奇记录保存
【发布时间】:2014-02-28 00:38:55
【问题描述】:

这是一个基本的问题,但需要澄清一下。

我有这段代码。

   //line of code #1

[localContext MR_saveToPersistentStoreWithCompletion:^(BOOL success, NSError *error) {

   //line of code #2

}];

代码行#2 是完成块吗?我是否应该在另存为代码 #1 行显示之前对实体进行更改?

谢谢

【问题讨论】:

    标签: ios objective-c core-data magicalrecord


    【解决方案1】:

    任何形式为^(…) { … }^{ … } 的都是block。本质上,一个块是可移植的一块不直接执行的代码。可以将块保存到变量中,然后在稍后的时间点执行。

    typedef void (^my_block_t)();
    my_block_t myBlock = ^{
        NSLog(@"I'm in a block");
    };
    

    这是一个打印日志语句的块。该块被保存到变量myBlock。注意:此时,NSLog 不会打印出任何内容。

    在稍后的某个时间点,可以执行myBlock

    myBlock();
    

    此时,代码块已运行,NSLog 打印出它的语句。

    如果您的示例,第 2 行代码的执行会延迟到保存完成之后。

    从逻辑上讲,它的工作原理与:

    步骤 1) 执行代码行 #1
    步骤 2) 执行保存
    步骤 3) 执行代码行#2

    因为第 2 行代码中的事情是在保存完成后发生的,所以此时对模型的任何更改都不会被保存。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-24
      • 2014-08-04
      • 1970-01-01
      相关资源
      最近更新 更多