Не удается получить доступ к контексту управляемого объекта при инициализации представления - PullRequest
0 голосов
/ 25 августа 2011

Я использую файл MainWindow.xib, который имеет следующую конфигурацию:

MainWindow.xib

  • UITabBarController
    • UINavigationBarController
      • UITableViewControllerAlpha
    • UINavigationBarController
      • UITableViewControllerBeta
    • UINavigationBarController
      • UITableViewControllerCharlie
      101025 *

    Но на основании следующего поста: Почему инициализация Core Data не удается, когда я пытаюсь сделать это в этих точках? и точки останова, которые я установил, япришли к выводу, что initWithCoder используется для инициализации всех UITableViewControllers и что нет способа надежно использовать managedObjectContext в этот момент жизненного цикла приложения.

    Значит ли это, что я долженвыбросить все «легкие» дизайнерские работы и макет, которые я выполнил в MainWindow.xib, и делать это программно?Означает ли использование базовых данных невозможность использования файлов NIB?Или есть какой-то средний план?

    Пожалуйста, дайте мне знать, спасибо!

1 Ответ

0 голосов
/ 25 августа 2011

Нет проблем с совместным использованием базовых данных, табличных представлений и NIB. Я предполагаю, что вам нужно получить некоторые объекты из MOC для представления таблицы, и у вас возникают проблемы с поиском MOC, когда вам нужно это сделать.

Этот подход работает для меня:

  • Определить перо как основной интерфейс цели.
  • Загрузка контроллера Nav и контроллера корневого просмотра в nib.
  • Установить свойство managedObjectContext контроллера корневого представления в applicationDidFinishLaunching:
  • Выборка из MOC в контроллере корневого представления viewDidLoad

Итак, попробуйте сначала:

  • Попросите делегата приложения установить значение управляемогоObjectContext контроллера в applicationDidFinishLaunching:
  • Делать выборку в viewDidLoad вместо initWithCoder.

Если это не сработает, у вас все еще есть по крайней мере эти опции:

  1. Установите значение параметра управления управляемого объекта_объекта в applicationDidFinishLaunching:, но не извлекайте данные, пока не будут вызваны методы источника данных. В этих методах условно завершите выборку, если это еще не сделано.

  2. Напишите на вашем контроллере метод, подобный loadDataFromMOC:, который одновременно устанавливает MOC и выбирает из него, и вызывает его из applicationDidFinishLaunching:.

...