2

另一个我已经呆了几个小时了。我在让我的应用程序“看到”我的数据库中的实体时遇到了一个重大问题......

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

我在 viewController 头文件中设置了所有正确的 @property:

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

我还让每个 viewController 成为:

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

这是我得到的错误:

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

令人困惑的是,如果我从 appDelegate 更改启动视图,在我选择的任何视图控制器中看到实体都没有问题。似乎它正在将其“注入”到第一个中,但仅此而已。

我猜我需要设置/分配初始化一个 NSManagedObject 并将其引用回我的实体,但我不知道该怎么做。

有什么线索吗?

谢谢

4

1 回答 1

1

所以我想你需要做的是像这样传递 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;
    }
}
于 2012-04-23T15:26:34.077 回答