executeFetchRequest返回来自不同NSManagedObjectContext的实体

时间:2014-04-23 14:40:08

标签: ios core-data nsmanagedobjectcontext executefetchrequest

在我的应用程序中,我使用两个NSManagedObjectContexts,一个用于存储永久数据,另一个用于处理临时数据(因此我可以使用NSManagedObject子类)。

当我在临时NSManagedObjectContext中创建临时实体后执行获取请求时,我获得所有永久存储的实体和临时实体。

这是我的代码:

//create temporarily stored entity
Entity *entity = [NSEntityDescription insertNewObjectForEntityForName:@"Entity" inManagedObjectContext:temporaryManagedObjectContext];

//...

//get permanently stored entities
NSMutableArray *mutableFetchResults = [[[permanentManagedObjectContext executeFetchRequest:request error&error] mutableCopy];

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

谢谢大家,你的评论引导我犯了我的错误,非常愚蠢我不得不说:我从永久上下文中复制了用于创建临时上下文的代码,忘了替换所有的出现,对我感到羞耻!

if (temporaryManagedObjectContext != nil) return temporaryManagedObjectContext;

NSPersistentStoreCoordinator *coordinator = [self persistentStoreCoordinator];
if (coordinator != nil) {
    temporaryManagedObjectContext = [[NSManagedObjectContext alloc] init];
    [temporaryManagedObjectContext setPersistentStoreCoordinator:coordinator];
}

//returned the wrong NSManagedObjectContext
return permanentManagedObjectContext;