1

我正在尝试通过 segue 将我的 managedObjectContext 从我的 masterViewController 发送到 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'

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

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

我再也想不出我做错了什么,请帮忙。

4

2 回答 2

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;
    }
}
于 2013-12-18T08:58:04.907 回答
0

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

于 2013-12-18T08:44:36.203 回答