魔法记录保存在背景中

Nik*_*iko 6 xcode multithreading core-data ios magicalrecord

我正在使用魔法记录框架来保存用户设置.现在,我第一次想要在后台线程中保存东西.在Magical Record的github页面上是一个我不完全理解的示例片段:

Person *person = ...;
[MagicalRecord saveInBackgroundWithBlock:^(NSManagedObjectContext *localContext){

    Person *localPerson = [person MR_inContext:localContext];

    localPerson.firstName = @"John";
    localPerson.lastName = @"Appleseed";

}];
Run Code Online (Sandbox Code Playgroud)

为什么需要第一行?我不能完全在块中创建Person吗?谢谢!

All*_*ian 12

当然可以.这个例子只是person从外部上下文中获取一个对象(你的默认对象或其他),并在后面给你一个指向它的指针,localContext这样你就可以在后台更新它.如果你要person从头创建一个你可以做这样的事情:

[MagicalRecord saveInBackgroundWithBlock:^(NSManagedObjectContext *localContext){

    Person *localPerson = [Person MR_createInContext:localContext];

    localPerson.firstName = @"John";
    localPerson.lastName = @"Appleseed";

}];
Run Code Online (Sandbox Code Playgroud)

而且你已经完成了.

PS.注意,这MR_createInContext:是一个在类上调用的类方法Person(而不是在MR_inContext:实例上调用的实例方法person).

  • 你确定你已经创建了这样的实体:`[Person MR_createInContext:localContext];`块里面?(另外,对于v3.x的事情感到抱歉,这是下一个要发布的主要版本.当前稳定的版本是2.1) (2认同)