ここで単純な問題が発生したと思います。AppDelegate の managedObjectContext を 2 つのビュー コントローラーに渡そうとしています。この学習用デモでは、2 つの ViewController が隣り合っています。(私の実際のアプリでは、それらは遠く離れています。)
これは機能します:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
UINavigationController *navigationController = (UINavigationController *)self.window.rootViewController;
Page1ViewController * page1VC = [[navigationController viewControllers] objectAtIndex:0];
page1VC.managedObjectContext = self.managedObjectContext;
return YES;
}
しかし、2 番目のビュー コントローラー (objectAtIndex:1) を追加すると、次のようにはなりません。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
UINavigationController *navigationController = (UINavigationController *)self.window.rootViewController;
Page1ViewController * page1VC = [[navigationController viewControllers] objectAtIndex:0];
page1VC.managedObjectContext = self.managedObjectContext;
Page2ViewController *page2VC = [[navigationController viewControllers] objectAtIndex:1];
page2VC.managedObjectContext = self.managedObjectContext;
return YES;
}
次のエラーが表示されます。
*** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArrayI objectAtIndex:]: index 1 beyond bounds [0 .. 0]'
きっと正解に近い!? 誰かが助けてくれれば幸いです。(ちなみに、セグエを使用して managedObjectContext も渡します!)