我在appDelegate中设置了coredata,但它首先加载了mainWindow.xib以及该xib文件中的相应控制器+视图。这些控制器需要有一个managedObjectContext才能正确加载。在xib被取消归档后,它会在我的appDelegate中运行代码。
如何设置我的coredata然后加载mainWIndow.xib?或者只是确保在取消归档mainWindows.xib之前正确初始化coredata?
答案 0 :(得分:3)
您可以覆盖awakeFromNib
子类上的UIApplicationDelegate
,并在那里设置核心数据。一旦所有对象从您的nib文件中取消归档,但在它们的实例开始工作之前,将调用此方法。请将awakeFromNib
视为在实例开始运行之前调整任何行为的最后机会。
观察:
awakeFromNib
时,您必须致电[super awakeFromNib]
,否则您的超类可能无法正常初始化。awakeFromNib
的调用顺序未定义,因此您永远不会从awakeFromNib
内的同一个Nib向任何其他对象发送消息。作为奖励,这也意味着awakeFromNib
保证在之前运行同一NIB中的任何其他对象需要您的服务并向您发送任何消息。