title: Core-Data iPhone: could not locate an NSManagedObjectModel
body: <p>I am using Apple's CoreDataBooks sample project as a learning aid for core data. </p>
  
  <p>I modified the app so that when the app loads I show a menu page first - not the Books tableview (RootViewController).</p>
  
  <p>I have done the following:</p>
  
  <p>I created a menu page in interface builder (just a view with a button on it)</p>
  
  <p>The CoreDataBooksAppDelegate.h now looks like this:</p>
  
  <pre><code>// for the menu
  @class MenuViewController;
  
  @interface CoreDataBooksAppDelegate : NSObject &lt;UIApplicationDelegate&gt; {
  
  NSManagedObjectModel *managedObjectModel;
  NSManagedObjectContext *managedObjectContext;     
  NSPersistentStoreCoordinator *persistentStoreCoordinator;
  
  UIWindow *window;
  UINavigationController *navigationController;
  
  //for the menu
  MenuViewController *viewController;
  }
  
  - (IBAction)saveAction:sender;
  
  //for the menu
  @property (nonatomic, retain) IBOutlet MenuViewController *viewController;
  
  @property (nonatomic, retain, readonly) NSManagedObjectModel *managedObjectModel;
  @property (nonatomic, retain, readonly) NSManagedObjectContext *managedObjectContext;
  @property (nonatomic, retain, readonly) NSPersistentStoreCoordinator     *persistentStoreCoordinator;
  
  @property (nonatomic, readonly) NSString *applicationDocumentsDirectory;
  
  @property (nonatomic, retain) IBOutlet UIWindow *window;
  @property (nonatomic, retain) IBOutlet UINavigationController *navigationController;
  
  @end
  </code></pre>
  
  <p>The CoreDataBooksAppDelegate.m looks like this:</p>
  
  <pre><code>#import "CoreDataBooksAppDelegate.h"
  #import "RootViewController.h"
  // for the menu
  #import "MenuViewController.h"
  
  
  @implementation CoreDataBooksAppDelegate
  
  @synthesize window;
  @synthesize navigationController;
  
  // for the menu
  @synthesize viewController;
  
  
  #pragma mark -
  #pragma mark Application lifecycle
  
  - (void)applicationDidFinishLaunching:(UIApplication *)application {
  
  RootViewController *rootViewController = (RootViewController   *)[navigationController  topViewController];
  rootViewController.managedObjectContext = self.managedObjectContext;
  
  // for the menu
  [window addSubview:viewController.view];
  
  // Configure and show the window
  [window makeKeyAndVisible];
  }
  </code></pre>
  
  <p>The rest of CoreDataAppDelegete.m remains unchanged.</p>
  
  <p>In the MenuViewController when the button is clicked, the following action takes place:</p>
  
  <pre><code>RootViewController *modalViewController1 = [[[RootViewController alloc] initWithNibName:nil bundle:nil] autorelease];  
  [self presentModalViewController:modalViewController1 animated:YES];
  </code></pre>
  
  <p>In IB I changed the MainWindow.xib to call the MenuViewController rather than the RootViewController.</p>
  
  <p>So, the app loads and the menu is displayed properly with the button. Upon clicking the button the application crashes inside of the RootViewController's viewDidLoad.</p>
  
  <p>It crashes right here:</p>
  
  <pre><code>- (void)viewDidLoad {
  [super viewDidLoad];
  NSLog(@"1 START viewDidLoad RootViewController");
  self.title = @"Books";
  // Set up the edit and add buttons.
  self.navigationItem.leftBarButtonItem = self.editButtonItem;
  
  NSLog(@"2 setup button viewDidLoad RootViewController");
  // Configure the add button.
  UIBarButtonItem *addButton = [[UIBarButtonItem alloc]   initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self   action:@selector(addBook)];
  self.navigationItem.rightBarButtonItem = addButton;
  [addButton release];  
  
  NSLog(@"3 viewDidLoad RootViewController");
  NSError *error;
  // HERE IS THE CRASH SITE
   if (![[self fetchedResultsController] performFetch:&amp;error]) {
    NSLog(@"Does not reach this point in viewDidLoad RootViewController");
    // Update to handle the error appropriately.
    NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
    abort();  // Fail
   }
   NSLog(@"END viewDidLoad RootViewController");
  }
  </code></pre>
  
  <p>In the console I receive the following:</p>
  
  <pre><code>Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '+entityForName: could not locate an NSManagedObjectModel for entity name 'Book''
  </code></pre>
  
  <p>I have read about this exception but I do not know the proper steps to resolve it.</p>