我还使用Core Data选择了一个空Xcode模板的应用。
Xcode在我的应用程序委托中自动生成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是零:
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '+entityForName: nil is not a legal NSManagedObjectContext parameter searching for entity name 'Ingredient''
最佳答案
如果有内存,则核心数据模板会为其所需的各种对象(包括MOC)创建访问器方法。您正在访问支持iVar _managedObjectContext,因此不会调用那些访问器方法。尝试通过AppDelegate上的访问器方法-managedObjectContext
获取它。
关于ios - 核心数据-传递参数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18618124/