从另一个ViewController(核心数据)访问“实体”

问题描述:

另一个人曾经呆了好几个小时。我有一个主要问题让我的应用程序'看到'我的数据库中的实体...从另一个ViewController(核心数据)访问“实体”

我已经在我的appDelegate中创建代码来设置核心数据。我启动的第一个视图可以访问这些数据(读/写),没有任何问题。如果我然后尝试从另一个viewController访问数据库,就好像它不存在一样。

我拥有所有正确的@财产在我的viewController头文件设置:

@property (strong, nonatomic) NSFetchedResultsController *fetchedResultsController; 
@property (strong, nonatomic) NSManagedObjectContext *managedObjectContext; 

我也有各自的viewController是:

NSFetchedResultsControllerDelegate 
  • 我已经导入相关的头.m文件中我想访问该实体的文件。

这是我的错误:

'+entityForName: could not locate an NSManagedObjectModel for entity name MyEntityName' 

混乱的事情是,如果我从的appDelegate改变启动的观点是没有问题,看到在任何视图控制器我选择的实体。它似乎是“注入”到第一个,但那就是多数民众赞成在它。

我猜我需要设置/分配init NSManagedObject并将其引回到我的实体,但我不知道如何做到这一点。

任何线索?

感谢

+0

你是如何传递managedObjectContext到viewControllers什么?我看到你的财产,但你真的分配它? – 2012-04-23 14:59:07

+0

嗨保罗......我不认为我现在把它们归还给任何东西。我该怎么做呢? – 2012-04-23 15:06:26

+0

也......是传递managedObjectContext的'正确的方式',或者我应该为每个viewController创建新的? – 2012-04-23 15:07:25

所以我想你需要做的是通过managedObjectContext这样

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender; 
{ 
    if ([[segue identifier] isEqualToString:@"theIdentifier"]) { 
     UINavigationController *navigationController = (id)[segue destinationViewController]; 

     MySecondViewController *topViewController = [navigationController topViewController]; 
     topViewController.managedObjectContext = self.managedObjectContext; 
    } 
} 
+0

啊我没有意识到你通过segue像其他数据通过它...哎呀! – 2012-04-23 15:36:47

+0

这个修复了吗? – 2012-04-23 15:46:47

+0

nope :(它现在说:UINavigationController setManagedObjectContext:]:无法识别的选择器发送到实例 – 2012-04-23 15:51:37