【问题标题】:Tab bar application with UINavigation Controller MOC not being retained未保留 UINavigationController MIC 的选项卡栏应用程序
【发布时间】:2011-02-04 13:30:18
【问题描述】:

我从模板创建了一个标签栏应用程序,并向其中一个标签添加了一个导航控制器。我已经从导航应用程序模板创建了这个应用程序并且正在运行。我这样做的原因是因为我需要添加一个标签栏,并且认为使用标签栏项目模板并将导航控制器添加到它会更容易,而不是相反。

我已经从另一个项目中复制了数据模型并将相关代码添加到它应该在的位置。

我遇到的问题是将moc 从应用程序委托传递到导航控制器打开的选项卡。这是我的应用程序委托中applicationDidFinishLaunching 方法的一个 sn-p:

(void)applicationDidFinishLaunching:(UIApplication *)application {
[self createEditableCopyOfDatabaseIfNeeded];



Top_BananaTableViewController *top_BananaTableViewController = (Top_BananaTableViewController *)[navigationController topViewController];

top_BananaTableViewController.managedObjectContext = self.managedObjectContext;



// Add the tab bar controller's current view as a subview of the window
[window addSubview:tabBarController.view];
[window makeKeyAndVisible];
}

这里一切似乎都很好,但是当涉及到我的导航控制器视图上的 fetchedResultsController 时,它会爆炸:

+entityForName: 找不到实体的 NSManagedObjectModel 名称“卡片”

当我在那个视图上检查我的managedObjectContext 的设置时,它是null

我不知道它为什么或在哪里失去了它的设置。

【问题讨论】:

    标签: iphone uinavigationcontroller tabbar


    【解决方案1】:
     Top_BananaTableViewController *top_BananaTableViewController =
     (Top_BananaTableViewController *)[navigationController topViewController];
    

    我的猜测是navigationController 在这里是nil,或者调用topViewController 方法的返回值是nil

    【讨论】:

    • 我已经解决了这个问题:Top_BananaAppDelegate *appDelegate = (Top_BananaAppDelegate *)[UIApplication sharedApplication].delegate; self.managedObjectContext = appDelegate.managedObjectContext;在 TopBananaTableViewController 的 viewdidload 方法中
    【解决方案2】:

    “+entityForName: 找不到实体名称“卡片”的 NSManagedObjectModel”是因为您没有有效的 MOC 参考。

    【讨论】:

      猜你喜欢
      • 2011-11-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多