将managedObjectContext发送到viewController会崩溃

时间:2013-12-18 08:41:13

标签: ios objective-c core-data segue managedobjectcontext

我正在尝试通过segue从masterViewController发送我的managedObjectContext到anotherController,我总是收到此错误:

-[UINavigationController setManagedObjectContext:]: unrecognized selector sent to instance 0x8d67c70
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UINavigationController setManagedObjectContext:]: unrecognized selector sent to instance 0x8d67c70'

我从masterViewController的viewDidLoad()中的appDelegate获取了managedObjectContext,如下所示:

AppDelegate *appDelegate = [UIApplication sharedApplication].delegate;
self.managedObjectContext = appDelegate.managedObjectContext;

我无法想到任何我可能做错的事情,请帮忙。

2 个答案:

答案 0 :(得分:2)

我猜测具有managedObjectContext属性的视图控制器嵌入在导航控制器中。在segue方法中,确保获取对正确视图控制器的引用:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([[segue identifier] isEqualToString:@"MySegue"]) {

        UINavigationController *navController = (UINavigationController *)segue.destinationViewController;
        MyViewController *vc = (MyViewController *)navController.topViewController;

        AppDelegate *appDelegate = [UIApplication sharedApplication].delegate;
        vc.managedObjectContext = appDelegate.managedObjectContext;
    }
}

答案 1 :(得分:0)

在UINAvigationController上调用setter方法,只有在创建属性managedObjectContext时才存在该方法。所以你必须继承UINavigationConroller,创建属性然后你应该能够从另一个类设置它。