1

我在设置一个NSManagedObjectContext视图控制器时遇到问题 - LibraryTrackTimeViewController。我附上一个截图(我希望这不违反这里的规则)以使其更清楚:

http://imgur.com/qgrH4T2

如您所见 - 它嵌入在 aNavigationController和 atabBarContoller中。我正在NSManagedObjectContext为其他 viewControllers设置appDelegate

-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
UITabBarController *tabBarController = (UITabBarController *)self.window.rootViewController;

UINavigationController *navigationController = (UINavigationController *)[[tabBarController viewControllers] objectAtIndex:0];

TagLibraryViewController *tagLibraryViewController = (TagLibraryViewController *)[[navigationController viewControllers] objectAtIndex:0];
tagLibraryViewController.managedObjectContext = self.managedObjectContext;

navigationController = (UINavigationController *)[[tabBarController viewControllers] objectAtIndex:1];

LibrariesViewController *librariesViewController = (LibrariesViewController *)[[navigationController viewControllers] objectAtIndex:0];
librariesViewController.managedObjectContext = self.managedObjectContext;

MapViewController *mapViewController = (MapViewController *)[[tabBarController viewControllers] objectAtIndex:2];
mapViewController.managedObjectContext = self.managedObjectContext;

return YES;

}

其他视图控制器很容易通过managedObjectContext- 但我无法解决如何将它发送给我的问题,LibraryTrackTimeViewController因为它是嵌入式的。你可以给我的任何帮助或建议 - 这太棒了!有没有更好的方法将其发送objectContexts到我的视图控制器?

4

1 回答 1

2

如果您觉得它太复杂,您可以从应用委托公开上下文

// AppDelegate.h
@property (nonatomic, strong) NSManagedObjectContext *managedObjectContext;

然后直接从代表那里得到它:

#include "AppDelegate.h"

AppDelegate *delegate = (AppDelegate*)
             [[UIApplication sharedApplication] delegate];
self.managedObjectContext = delegate.managedObjectContext;

这不是建议 - 我还建议您将上下文传递给控制器​​。但它是一种完全有效的设计模式,所以如果你觉得它更容易,你可以使用它。

于 2013-01-29T21:43:57.950 回答