核心数据和魔法记录保存

时间:2014-02-28 00:38:56

标签: ios objective-c core-data magicalrecord

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

我有这段代码。

   //line of code #1

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

   //line of code #2

}];

代码行#2是完成块吗?我应该在保存之前对实体进行更改,如代码#1所示?

由于

1 个答案:

答案 0 :(得分: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中的内容在保存完成后发生,所以此时不​​会保存对模型的任何更改。