Core Data も使用して、空の Xcode テンプレートでアプリケーションを作成しました。
Xcode は、App Delegate で ManagedObjectModel、ManagedObjectCONtex、および PersistenStoreCoordinator を自動的に生成します。
物事をきれいに保つために、ManagedObjectContext を MainVieController に渡し、それを tableViewController にも渡します (MainViewController は、TableViewController を含む TabBarViewController です)。
それは私がやった方法ですが、うまくいかないようです:
アプリ デリゲート
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
MasterViewController *masterViewController = [[MasterViewController alloc]initWithNibName:@"MasterViewController" bundle:nil];
[masterViewController setManagedObjectContex:_managedObjectContext];
[self.window setRootViewController:masterViewController];
self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];
return YES;
}
MasterViewController
- (void)viewDidLoad
{
[super viewDidLoad];
TableIngredientsViewController *tableIngredientVC = [[TableIngredientsViewController alloc]init];
[tableIngredientVC setManagedObjectContex:_managedObjectContex];
tableIngredientVC.fetchedResultController = _fetchedResultController;
TablePizzasViewController *tablePizzaVC = [[TablePizzasViewController alloc]init];
tablePizzaVC.managedObjectContex = _managedObjectContex;
tablePizzaVC.fetchedResultController = _fetchedResultController;
UINavigationController *ingredientNavController = [[UINavigationController alloc]initWithRootViewController:tableIngredientVC];
UINavigationController *pizzaNavController = [[UINavigationController alloc]initWithRootViewController:tablePizzaVC];
[self setViewControllers:@[pizzaNavController, ingredientNavController]];
}
これは私が得るエラーです、managedObjectContext が nill のように見えます:
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '+entityForName: nil is not a legal NSManagedObjectContext parameter searching for entity name 'Ingredient''