我试图数据导入到核心数据,并将其与MagicalRecord保存在后台线程。MagicalRecord:如何导入的数据保存在后台
基本上,我想这样做:
__block User *user = nil;
[MagicalRecord saveWithBlockAndWait:^(NSManagedObjectContext *localContext)
{
user = [User MR_findFirstOrCreateByAttribute:@"userId" withValue:userId inContext:localContext];
[user MR_importValuesForKeysWithObject:responseObject];
}];
[User setCurrentUser:user];
用户是正确的,当我的块中。块完成后user
是一个NSManagedObject对象,但没有设置任何属性。
此,在另一方面,工作原理:
OEUser *user = [OEUser MR_findFirstOrCreateByAttribute:@"userId" withValue:userId];
[user MR_importValuesForKeysWithObject:responseObject];
[[NSManagedObjectContext MR_defaultContext] MR_saveToPersistentStoreAndWait];
[User setCurrentUser:user];
但我希望将其保存在后台。
我也试过这个无济于事。
User *user = [User MR_findFirstOrCreateByAttribute:@"userId" withValue:userId];
[MagicalRecord saveWithBlockAndWait:^(NSManagedObjectContext *localContext)
{
User *localUser = [user MR_inContext:localContext];
[user MR_importValuesForKeysWithObject:responseObject];
}];
[User setCurrentUser:user];
这里的问题似乎是:[user MR_inContext:localContext]
返回零。
我对Core Data很新,所以如果我错过了一些明显的东西,请耐心等待。
感谢伟大的答案。其他问题:在我的第二个失败的例子中,是否有任何方式访问在块创建的本地上下文中创建的默认上下文(尚未保存)的用户?或者唯一的方法是事先保存默认的上下文? –