2011-09-12 24 views
3

我使用的串行GCD队列辅助managedobjectcontext,使用相同的持久存储区协调员(和型号)。我遇到的问题是二级managedobjectmodel显示为空 - 所有提取请求都不返回任何内容。我正在使用一个SQLite商店。我试图在主线上做同样的事情无济于事。多的NSManagedObjectContext发出

代码非常简单。 CoreDataUtility是一个单例,单例的manageObjectContext成员是另一个托管对象上下文。

NSManagedObjectContext *managedObjectContext = [[NSManagedObjectContext alloc] init]; 
    [managedObjectContext setPersistentStoreCoordinator:[CoreDataUtility instance].managedObjectContext.persistentStoreCoordinator]; 

获取请求(我试过几个)与妈妈的例外是相同的。

二级妈妈看在调试器很好 - 你所期望的是在初级妈妈一样的属性其实都是一样的。

回答

0

的问题竟然是与我加载模型的方式。我没有解释为什么这会起作用,但它确实解决了问题。也许别人可以阐明。

此代码:

NSString *modelPath = [[NSBundle mainBundle] pathForResource:@"mymodel" ofType:@"momd"]; 
NSURL *modelURL = [NSURL fileURLWithPath:modelPath]; 
managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL]; 
0

如果持久存储协调从[CoreDataUtility instance].managedObjectContext.persistentStoreCoordinator返回正确的是(你检查吗?),那么这部分至少应该罚款。

我使用类似的方法在自己的应用程序,和我创建的背景上下文代码是完全一样的主要背景。我希望问题可能在其他地方。

你试过访问对象的主要方面,然后断裂对象为使用其他背景:

NSManagedObject *backgroundObject = [backgroundContext existingObjectWithID:object error:&error]; 

,看是否该对象是否仍然有效?

+0

如果我在第一时间拿到上下文的有效对象,然后尝试检索其OBJECTID我得到空从其他:

managedObjectModel = [[NSManagedObjectModel mergedModelFromBundles:nil] retain]; 

与此代码替换上下文。我正在做同样的事情来创造妈妈 - 给它一样的持久性商店协调员。 – John

+0

在该操作上,出现以下错误。错误:错误域= NSCocoaErrorDomain代码= 133000“操作无法完成(可可错误133000.) – John

+0

只是为了澄清 - 当你说”妈妈“,我认为你的意思是上下文,而不是模型? ?店协调员是由你的环境权共享 – Stuart