我正在尝试通过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;
我无法想到任何我可能做错的事情,请帮忙。
答案 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,创建属性然后你应该能够从另一个类设置它。