Core data 访问';实体';来自另一个ViewController(核心数据)

Core data 访问';实体';来自另一个ViewController(核心数据),core-data,nsmanagedobject,Core Data,Nsmanagedobject,另一个我已经看了好几个小时了。我在让我的应用程序“查看”我数据库中的实体时遇到了一个大问题 我已经在appDelegate中创建了用于设置核心数据的代码。我引导到的第一个视图可以毫无问题地访问此数据(读/写)。如果我尝试从另一个viewController访问该数据库,则它就好像不存在一样 我在viewController头文件中设置了所有正确的@property: @property (strong, nonatomic) NSFetchedResultsController *fetched

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

我已经在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中更改启动视图,在我选择的任何视图控制器中查看实体都不会有问题。它似乎是“注射”到第一个,但然后就是它

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

有什么线索吗


谢谢

所以我想你需要做的就是像这样传递managedobject上下文

- (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;
    }
}

如何将managedObjectContext传递到ViewController?我看到了你的财产,但你真的分配了吗?嗨,保罗。。。我认为目前我没有把它们重新分配给任何事情。我该怎么做?还有。。。这是传递managedObjectContext的“正确方法”还是应该为每个viewController创建新的managedObjectContext?我通常会传递它。我唯一倾向于创建一个新上下文的时候是我需要在后台线程中工作的时候<代码>myViewController.managedObjectContext=self.managedObjectContext啊,我不知道你像其他数据一样通过segue传递它。。。哎呀!不:(它现在的意思是:UINavigationController setManagedObjectContext:::发送到instanceI的无法识别的选择器我已经导入了我也要转换到的头文件+下一个视图控制器中的属性拼写正确,请检查我的调整代码它应该说明您在
UINavigationCon中拥有新的ViewController特罗勒