Cocoa touch 视图初始化时无法访问托管对象上下文

Cocoa touch 视图初始化时无法访问托管对象上下文,cocoa-touch,core-data,xib,nib,Cocoa Touch,Core Data,Xib,Nib,我使用的MainWindow.xib文件具有以下配置: MainWindow.xib 超宽带控制器 UINAVIGATIONBAR控制器 UtableViewControlleralPha UINAVIGATIONBAR控制器 UITableViewControllerBeta UINAVIGATIONBAR控制器 UITableViewControllerCharlie 但根据以下帖子: 通过我设置的断点,我得出结论:initWithCoder用于初始化所有UITableViewControl

我使用的MainWindow.xib文件具有以下配置:

MainWindow.xib

超宽带控制器 UINAVIGATIONBAR控制器 UtableViewControlleralPha UINAVIGATIONBAR控制器 UITableViewControllerBeta UINAVIGATIONBAR控制器 UITableViewControllerCharlie 但根据以下帖子: 通过我设置的断点,我得出结论:initWithCoder用于初始化所有UITableViewController,并且在应用程序生命周期的这一点上无法可靠地使用managedObjectContext

那么,这是否意味着我必须扔掉我在MainWindow.xib中执行的所有简单设计工作和布局,并以编程方式进行?使用核心数据真的意味着不能使用NIB文件吗?还是有中间立场


请让我知道,谢谢

同时使用核心数据、表视图和NIB没有问题。我假设您需要从MOC中为表视图获取一些对象,并且在需要时查找MOC时遇到问题

这种方法对我有效:

将nib定义为目标的主接口。 在nib中加载导航控制器和根视图控制器。 在ApplicationIDFinishLaunching中设置根视图控制器的managedObjectContext属性: 从根视图控制器的viewDidLoad中的MOC获取 因此,请先尝试以下方法:

让应用程序代理在ApplicationIDFinishLaunching中设置控制器的managedObjectContext: 在viewDidLoad而不是initWithCoder中执行获取。 如果不起作用,您至少还有以下选项:

在ApplicationIDFinishLaunching:中设置控制器的managedObjectContext,但在调用数据源方法之前不要获取数据。在这些方法中,如果尚未完成获取,则有条件地完成获取

在控制器上编写一个类似loadDataFromMOC:的方法,该方法设置MOC并从中获取,然后从ApplicationIDFinishLaunching:调用它