我还使用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/

10-12 04:41