私はこのアイテムに関するほとんどの質問を読んでいますが、どういうわけか私はこれを理解することができません。
私は、ManagedObjectContextをAppDelegateから、最初のviewControllerがデータも処理する以前のアプリケーションの最初のビューに簡単に引き渡すことができました。
私が構築している新しいアプリケーションでは、ユーザーが(いくつかの可能なボタンを使用して)選択する必要がある初期画面が必要です。この画面では、トラブルシューティングに従ってMOCはそのままです(NSLogメッセージはMOCの有効なアドレスを示します)。
選択が行われると、アプリはTableViewを含むUIViewControllerに進みます。このビューでは、データを管理できるはずですが、MOCはnilを返します。
アプリは、UINavigationControllerを介して次のビューに進みます。
AppDelegateに次のコードを組み込みました。
UINavigationController *navigationController = (UINavigationController *)self.window.rootViewController;
InitialViewController *controller = (InitialViewController *)navigationController.topViewController;
controller.managedObjectContext = self.managedObjectContext;
return YES;
InitialViewControllerは最初のViewControllerであり、すべてが正常です。
次のビューコントローラはMasterViewControllerと呼ばれ、NSFetchedControllerDelegateです。ここでは、NOCにアクセスできないようです。同じトピックに関する以前の質問で提案されたいくつかのアプローチと解決策を試しましたが、どれもうまくいかないようです。
適切なコーディングでNOCをMasterViewControllerで機能させるにはどうすればよいですか?
そうそう、うまくいった解決策の1つは、MasterViewControllerのViewDidLoadの後に、次のコードを挿入することです。
AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
self.managedObjectContext = appDelegate.managedObjectContext;
私のMOCは現在利用可能ですが、これは正しい方法ですか?