Я использовал шаблон по умолчанию, предоставленный Apple с Core Data (managedObjectContext находится в AppDelegate).Сначала я включал appdelegate.h во все классы, в которых мне нужно было использовать managedObjectContext, но я понял, что это неправильный способ сделать это.Apple говорит, что лучше передавать контекст только другим классам, которые в нем нуждаются, и так далее, поэтому я так и сделал.Дело в том, что это выглядит немного «хакерски», как я это сделал, и мне интересно, есть ли лучший вариант или мое решение верное.
Мое приложение в настоящее время настроено так (вот SSмоя раскадровка):
Итак, мое корневое окно - это UITabBarController, а каждая вкладка - это UINavigationController, который указывает на несколько UITableViewController / UIViewController.
Вот то, что у меня есть в моем Appdelegate дляпередать экземпляр managedObjectContext на 2 вкладки:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
UITabBarController *rootViewController;
UINavigationController *navigationController;
ItemsTableViewController *itemsTableViewController;
// Get the root window (UITabBarController)
rootViewController = (UITabBarController *)self.window.rootViewController;
// Get the second item of the UITabBarController
navigationController = [[rootViewController viewControllers] objectAtIndex:1];
// Get the first item of the UINavigationController (ItemsTableViewController)
itemsTableViewController = [[navigationController viewControllers] objectAtIndex:0];
itemsTableViewController.managedObjectContext = self.managedObjectContext;
// Get the third item of the UITabBarController (again ItemsTableViewController)
navigationController = [[rootViewController viewControllers] objectAtIndex:2];
// Get the first item of the UINavigationController (ItemsTableViewController)
itemsTableViewController = [[navigationController viewControllers] objectAtIndex:0];
itemsTableViewController.managedObjectContext = self.managedObjectContext;
return YES;
}
Все работает хорошо, но необходимость многократного вызова objectAtIndex для перехода к нужному ViewController выглядит лучше ...
Любое лучшее решение?
Спасибо!