2012-04-23 2 views
0

私はこのチュートリアルに伴い、以下のよ間managedObjectContextを渡す:エラーは一種のあいまいなようだが、私エラーコアデータのためのクラス

2012-04-23 09:53:13.969 PictureList[10287:fb03] -[UINavigationController setManagedObjectContext:]: unrecognized selector sent to instance 0x6d20a80 
2012-04-23 09:53:13.992 PictureList[10287:fb03] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UINavigationController setManagedObjectContext:]: unrecognized selector sent to instance 0x6d20a80' 
*** First throw call stack: 
(0x16ab022 0x183ccd6 0x16accbd 0x1611ed0 0x1611cb2 0x1c05 0x14386 0x15274 0x24183 0x24c38 0x18634 0x1595ef5 0x167f195 0x15e3ff2 0x15e28da 0x15e1d84 0x15e1c9b 0x14c65 0x16626 0x1afd 0x1a65) 
terminate called throwing an exception(lldb) 

http://maybelost.com/2011/12/tutorial-storyboard-app-with-core-data/と私はクラス間managedObjectContextを渡そうとし、このエラーを取得していますUINavigationControllerがこの問題の原因であると考えられます。私はそれを実行するとすぐにアプリケーションがクラッシュします。ここで

は、私は私の最初のコントローラにコンテキストを渡すためにしようとしている私のAppdelegate.mのためのコードです:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
    { 
    // Pass the managed object context to the root view controller (the login view) 
    LoginViewController *rootView = (LoginViewController *)self.window.rootViewController; 
    rootView.managedObjectContext = self.managedObjectContext; 
    .... 
    } 
return YES; 
} 

そして私はを通じて、次のクラスに私のLoginViewControllerから渡すようにしようとしていますセグエ。 LoginViewController.mは:ログインにロードするためにアプリを取得するために、私は、少なくともことができました。このアプローチを使用して

// This code was customized to handle the navigation controller 
// Pass the managed object context to the root view controller (the login view) 
UINavigationController *navigationController = (UINavigationController *)self.window.rootViewController; 
LoginViewController *rootView = (LoginViewController *)navigationController.topViewController; 
rootView.managedObjectContext = self.managedObjectContext; 

:私が試した

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    UINavigationController *navController = (UINavigationController *)[segue destinationViewController]; 
    PictureListMainTable *piclist = (PictureListMainTable *)[[navController viewControllers] lastObject]; 
    piclist.managedObjectContext = managedObjectContext; 
} 

葯のことはUINavigationControllerに沿って、コンテキストを渡すことでした私がしようとすると、アプリがクラッシュするだろう。この問題を解決するにはどうすればよいですか?

編集:問題が見つかりました。チュートリアルでは、ログインコントローラのログイン前にナビゲーションが埋め込まれていたが、ナビゲーションコントローラは実際にはLoginViewControllerとPictureListMainTableの間に入っているという印象を消してしまった。

+0

あなたの答えを以下のように書くことができますか?あなたはそれを受け入れることができ、質問は完了する(何か、何か、何か、ダークサイド...):-) –

答えて

0

エラーは、私が言う、非常に具体的なようだ:あなたのアプリの中でいくつかの点は、明示的、または暗黙的に(あなたが)UINavigationControllerインスタンスまたはサブクラスのmanagedObjectContextプロパティを設定することにより、いずれかのコード化されたライン[navController setManagedObjectContext: ...]あるで。

UINavigationControllerにはsetManagedObjectContext:というメソッドがありません。 .hの@property宣言で間違った設定を使用している可能性があります。@property行が.mのインタフェースに欠けているか、疑似命令がありません。

0

あなたはそのLoginViewControllerクラスのプロパティを宣言する必要があります:LoginViewController.hで

:LoginViewController.mで

@property(nonatomic, strong) NSManagedObjectContext *context; 

:applicationDidFinishLaunchingWithOptionsで次に

@synthesize context; 

// Pass the managed object context to the root view controller (the login view) 
LoginViewController *rootView = (LoginViewController *)self.window.rootViewController; 
rootView.context= self.managedObjectContext; 
関連する問題