将managedobjectcontext从Tab栏控制器传递到TableviewController使用navigationController时出错?

时间:2016-08-27 14:49:08

标签: ios xcode nsmanagedobject

我有一个与tab bar controller相关联的navigationController

navigationController已连接到3 TableviewControllers,而我遇到的问题是managedobject未正确传递;我把它作为Nil,错误信息是:

  

由于未捕获的异常而终止应用   'NSInvalidArgumentException',原因:'+ entityForName:nil不是   合法的NSManagedObjectContext参数搜索实体名称   'MyEntityName'

在我添加navigationController之前,我已tab bar controller直接连接到我的三个TableviewControllers并且managedObject正确传递,我知道我做错了什么?

这是didFinishLaunchingWithOptions中的AppDelegate代码:

 UITabBarController *tabBarController = (UITabBarController *)self.window.rootViewController;
    for (id viewController in [tabBarController viewControllers]) {
        if ([viewController respondsToSelector:@selector(setManagedObjectContext:)]) {
            [viewController setManagedObjectContext:self.managedObjectContext];
        }
    }

PS:如果您需要额外的代码和平来理解我的问题,我会很乐意发布它。

1 个答案:

答案 0 :(得分:0)

我通过更改didFinishLaunchingWithOptions中的代码来修复它;我的新代码是:

 UITabBarController *tabBarController = (UITabBarController *)self.window.rootViewController;
    NSArray *allTabs = tabBarController.viewControllers;

    // Navigation Controller in the tab of BreakFasts
    UINavigationController *navigationController = [allTabs objectAtIndex:0];
    MyTableViewController *controller1 = (MyTableViewController *)navigationController.topViewController;
    controller1.managedObjectContext = self.managedObjectContext;