魔法logging保存在后台

我正在使用魔法logging框架来保存用户设置。 现在,我第一次想把东西保存在后台线程中。 关于魔法logging的github页面是一个我不完全明白的例子:

Person *person = ...; [MagicalRecord saveInBackgroundWithBlock:^(NSManagedObjectContext *localContext){ Person *localPerson = [person MR_inContext:localContext]; localPerson.firstName = @"John"; localPerson.lastName = @"Appleseed"; }]; 

为什么需要第一行? 我不能完全创build块中的人? 谢谢!

当然可以。 这个例子只是从外部上下文(你的默认的一个或者别的什么)中抓取一个person对象,并且在localContext给你一个指向它的指针,所以你可以在后台更新它。 如果你想从头开始创build一个person ,你可以这样做:

 [MagicalRecord saveInBackgroundWithBlock:^(NSManagedObjectContext *localContext){ Person *localPerson = [Person MR_createInContext:localContext]; localPerson.firstName = @"John"; localPerson.lastName = @"Appleseed"; }]; 

你完成了。

PS。 请注意, MR_createInContext:是在Person类上调用的类方法(而不是在person实例上调用的MR_inContext: instance方法)。

是的,你也可以在块中创buildPerson。 只有从不同的上下文中获取Person的时候,inContext:方法才是必须的。 注意,如果你在块中创buildPerson,那么你应该使用createInContext:方法。

魔法logging保存和获取是基于上下文的。 因此,您可以使用MR_createInContext方法在默认上下文中创buildlogging,也可以在新上下文中创buildlogging。 但是,在获取logging时,上下文应该与您创build的相同。

http://pthiaga.blogspot.in/2014/11/running-database-fetch-core-data-in.html