ios - 核心数据和魔法记录保存

标签 ios objective-c core-data magicalrecord

这是一个基本问题,但需要一些说明。

我有这段代码。

   //line of code #1

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

   //line of code #2

}];

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

谢谢

最佳答案

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

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

这是一个打印日志语句的 block 。该 block 保存到变量 myBlock。注意:此时 NSLog 没有打印出任何东西。

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

myBlock();

在代码的这一点上, block 被运行并且 NSLog 打印出它的语句。

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

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

Step 1) execute line of code #1
Step 2) execute save
Step 3) execute line of code #2

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

关于ios - 核心数据和魔法记录保存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22083888/

相关文章:

ios - 如何以编程方式检查应用程序商店区域/国家?

ios - 将图像传递到另一个 View Controller 而不更改 View

ios - 在核心数据中存储 NSDate (swift)

ios - 将 NSManagedObject 变成部分错误,其中某些字段为零,有些字段不是

swift - 如何在MVC中使用coredata

ios - 使用 swift 在 Sqlite 中存储和检索图像

objective-c - CoreData 无法完成错误

ios - 面向对象编程的正确概念

ios - AWS Device Farm 的 XCTest 单元和 UI 测试

ios - 使用 Objective-C 单击按钮时更改图像