首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多个NSManagedObjectContext问题

多个NSManagedObjectContext问题
EN

Stack Overflow用户
提问于 2011-09-13 07:53:17
回答 2查看 1.8K关注 0票数 3

我在一个串行GCD队列中使用一个二级managedobjectcontext,使用相同的持久化存储协调器(和模型)。我遇到的问题是,辅助的managedobjectmodel似乎是空的--所有的fetch请求都不返回任何内容。我使用的是sqlite商店。我试着在主线程上做同样的事情,但没有效果。

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

代码语言:javascript
复制
    NSManagedObjectContext *managedObjectContext = [[NSManagedObjectContext alloc] init];
    [managedObjectContext setPersistentStoreCoordinator:[CoreDataUtility instance].managedObjectContext.persistentStoreCoordinator];

除了mom之外,fetch请求(我已经尝试过几次)都是相同的。

辅助mom在调试器中看起来很好--您期望在主mom中相同的属性实际上是相同的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-09-14 12:37:06

问题出在我加载模型的方式上。我没有解释为什么这个方法有效,但是它确实解决了这个问题。也许其他人可以解释清楚。

这段代码:

代码语言:javascript
复制
managedObjectModel = [[NSManagedObjectModel mergedModelFromBundles:nil] retain];

替换为以下代码:

代码语言:javascript
复制
NSString *modelPath = [[NSBundle mainBundle] pathForResource:@"mymodel" ofType:@"momd"];
NSURL *modelURL = [NSURL fileURLWithPath:modelPath];
managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];   
票数 0
EN

Stack Overflow用户

发布于 2011-09-13 08:15:28

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

我在自己的应用程序中使用了类似的方法,用于创建背景上下文的代码与创建主上下文的代码完全相同。我预计问题可能出在其他地方。

您是否尝试过在主上下文中访问对象,然后使用以下命令将该对象出错到其他上下文中:

代码语言:javascript
复制
NSManagedObject *backgroundObject = [backgroundContext existingObjectWithID:object error:&error];

并查看对象是否仍然有效?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7395364

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档