2011-08-25 38 views
0

我使用具有以下配置的的MainWindow.xib文件:不能訪問管理對象上下文當視圖初始化

的MainWindow.xib

  • 的UITabBarController
    • UINavigationBarController
      • UITableViewControllerAlpha
    • UINavigationBarController
      • UITableViewControllerBeta
    • UINavigationBarController
      • UITableViewControllerCharlie

但基於以下帖子: Why does Core Data initialization fail when I attempt to do it at these points? 和我已經放置的斷點,我得出的結論是,initWithCoder被用來初始化所有的UITableViewControllers,並且沒有辦法可靠地使用managedObjectContext在這指出了應用生命週期。

那麼這是否意味着我必須拋出所有在MainWindow.xib中執行的「簡單」設計工作和佈局,並以編程方式執行它?使用核心數據,是否意味着無法使用NIB文件?或者有一些中間地帶?

請讓我知道,謝謝!

回答

0

將核心數據,表格視圖和NIB一起使用沒有任何問題。我認爲你需要從MOC中爲你的表格視圖獲取一些對象,並且當你需要這樣做時你遇到了找到MOC的問題。

這種方法適用於我:

  • 定義筆尖爲目標的主界面。
  • 將導航控制器和根視圖控制器加載到筆尖中。
  • 集根視圖控制器在applicationDidFinishLaunching:
  • managedObjectContext財產MOC在取根視圖控制器的viewDidLoad

所以,先試試這個:

  • 有應用程序代理設置控制器managedObjectContext在applicationDidFinishLaunching:
  • viewDidLoad而不是initWithCoder

如果不工作,你仍然至少有下列選項:

  1. 設置控制器managedObjectContext在applicationDidFinishLaunching:,但直到您的數據源的方法稱爲不獲取數據。在這些方法中,如果尚未完成則有條件地完成提取。

  2. 在你的控制器上寫一個類似loadDataFromMOC:的方法,它既設置了MOC,又從中取出並從applicationDidFinishLaunching:中調用它。

+0

謝謝,viewDidLoad爲我工作。 – pulkitsinghal