使用MagicalRecord在后台导入数据并在完成时访问刚刚导入的数据的适当方法是什么?我是否必须手动保存所有导入数据的主键并将其传递给完成块才能从CoreData中再次找到它们?
[MagicalRecord saveWithBlock:^(NSManagedObjectContext *localContext)
{
NSArray *importedEntitiesArray = [MyEntity MR_importFromArray:bigResultsArray
inContext:localContext];
} completion:^(BOOL success, NSError *error)
{
// How to access the imported entities from here?
// Note we no longer have access to the saving localContext
// so the entities in importedEntitiesArray would be invalid
}]
我意识到我可以做到以下几点:
NSArray *importedEntitiesArray = [MyEntity MR_importFromArray:bigResultsArray];
[[NSManagedObjectContext MR_defaultContext] MR_saveToPersistentStoreAndWait];
但是这不会在后台导入数据。
答案 0 :(得分:2)
要将所有新加载后台的托管对象转移到另一个上下文,您需要在后台加载完成后获取所有托管对象ID,然后从其他上下文请求这些ID的所有对象。无论您认为哪个主键都不起作用,它必须是托管对象ID。您还需要将新加载的对象保存到持久性存储中(并根据您拥有的子/父关系刷新上下文),以便它们在其他上下文中可用。