我也使用核心数据创建了一个带有空 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;
}
主视图控制器
- (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 为零:
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '+entityForName: nil is not a legal NSManagedObjectContext parameter searching for entity name 'Ingredient''