0

新手类型的问题在这里。

由于 XCode 没有为带有 Core Data 的 TabBased 应用程序提供项目模板,所以我必须将 Core Data 堆栈从其他模板剪切并粘贴到我的 TabBased 应用程序中。

这是在 Master-Detail 应用程序模板中分配NSManagedObjectContext对象的AppDelegate方法:MasterViewController

// AppDelegate.m (Master-Detail template)

- (BOOL)application:(UIApplication *)application 
    didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    // Override point for customization after application launch.
    UINavigationController *navigationController = 
            (UINavigationController *)self.window.rootViewController;
    MasterViewController *controller = 
            (MasterViewController *)navigationController.topViewController;
    controller.managedObjectContext = self.managedObjectContext;
    return YES;
}

如何在 TabBased 应用程序中分配NSManagedObjectContextfrom到 ViewControllers?AppDelegate

4

2 回答 2

1

如果标签栏控制器是根视图控制器并且“主视图控制器”在第一个标签上:

UITabBarController *tbc = (UITabBarController *)self.window.rootViewController;
MasterViewController *controller = (MasterViewController *)tbc.viewControllers[0];
controller.managedObjectContext = self.managedObjectContext;

更新:如果第一个选项卡使用导航控制器,您只需插入一个步骤:

UITabBarController *tbc = (UITabBarController *)self.window.rootViewController;
UINavigationController *nc = tbc.viewControllers[0];
YourViewController controller = (YourViewController *)nc.topViewController;
controller.managedObjectContext = self.managedObjectContext;
于 2013-09-02T08:33:46.763 回答
0

在您的视图控制器上创建一个属性:

@property (strong, nonatomic) NSManagedObjectContext *managedObjectContext

然后说,例如你想为所有视图控制器分配这个。您可以通过遍历 UITabBarController 的 viewControllers 来实现。

UITabbarController *tabBarController = (UITabBarController *)self.window.rootViewController;
for (UIViewController *viewController in tabBarController.viewControllers) {
    viewController.managedObjectContext = self.managedObjectContext
}
于 2013-09-02T08:34:28.113 回答