魔法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