NSManagedObjectContext を AppDelegate から ViewController に渡しています。次に、Core Data から結果を取得しています。ただし、NSManagedObjectContext は ViewDidLoad メソッドでは常に nil ですが、ViewDidAppear メソッドではそうではありません。
2 つのメソッドの違いは理解していますが、ViewDidLoad からプロパティにアクセスできるはずだと思いました。Apple のサンプル コードでは、これが行われていることに気付きました。
ViewDidAppear を取得するだけでよいですか?
- (void)viewDidLoad
{
[super viewDidLoad];
// This code crashings because my because my Context is nil
NSError *error;
if (![[self fetchedResultsController] performFetch:&error]) {
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
exit(-1);
}
}
編集:私はこのように渡します
- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
RootViewController *rootViewController = [[RootViewController alloc] initWithNibName:@"RootViewController" bundle:nil];
rootViewController.managedObjectContext = self.managedObjectContext;
UINavigationController *rootNav = [[UINavigationController alloc] initWithRootViewController:rootViewController];
self.tabBarController = [[UITabBarController alloc] init];
self.tabBarController.viewControllers = [NSArray arrayWithObjects:rootNav, nil];
self.window.rootViewController = self.tabBarController;
[self.window makeKeyAndVisible];
return YES;
}