【问题标题】:Core Data View Controller binding issue核心数据视图控制器绑定问题
【发布时间】:2011-05-13 05:04:55
【问题描述】:

我有一个基于文档的应用程序,其视图控制器包含表格、数组控制器和添加/删除按钮。我已将托管对象上下文绑定到文件所有者 (myViewController) 并为 myMOC 建立了属性/综合命令。

我的问题是如何从视图控制器中设置托管对象上下文。我写了……

NSWindow *myWindow = [[self view] window];
NSWindowController *myWindowController = [myWindow windowController];
id myDoc = [myWindowController document];

self.myMOC = [myDoc managedObjectContext];

但是,从 awakeFromNibinit 中调用它会为 myWindow 生成一个 nil 值。任何帮助表示赞赏。谢谢

【问题讨论】:

  • 你是如何实例化你的视图控制器的?视图控制器是否从 nib 文件加载视图?您如何将视图添加到窗口中?

标签: objective-c cocoa core-data binding viewcontroller


【解决方案1】:

我假设加载时 myView 在它自己的 nib 中,然后由于 myViewController 是文件的所有者,因此您将视图添加到在不同 nib 中创建的窗口中。那是对的吗?如果是这样,[[self view] window] 应该返回 nil,因为在调用 awakeFromNib 或 init 时视图尚未添加到窗口。在将 myView 添加到窗口后,您需要运行 myMOC 设置代码。尝试将上面的代码分解为 -setupMOC 方法,并在将视图添加到窗口或超级视图后调用它。如果您立即执行此操作,您还可以在 awakeFromNib 中调用 [self performSelector:@selector(setupMOC) withObject:nil afterDelay:0.0]。

【讨论】:

  • 感谢您的回复。作为新手,我仍在学习 when 方法可以调用(这可能非常令人沮丧)。是的,myView 在它自己的 nib 中。在加载 viewController nib 文件后,我最终从 windowController 方法调用了最后两行代码(如上所述)。再次感谢。
猜你喜欢
  • 1970-01-01
  • 2021-07-15
  • 1970-01-01
  • 2012-06-26
  • 1970-01-01
  • 2013-12-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多