2009-09-21 2 views
0

Я недавно создал проект с использованием Core Data. Я проверил, где xcode спросит вас, хотите ли вы использовать данные Core или нет, и у меня есть код сгенерированных данных в моем делете приложения. Я заработал после многих часов исследований. Вот что я сделал, чтобы заставить его работать:Вопрос с Core Data/iPhone SDK?

  1. создал экземпляр managedObjectContext в приложение делегата
  2. пройти этот экземпляр к объекту, который будет делать Core, данные вызовы, например
    managedObjectContext = [self managedObjectContext ];
    // приведенный выше код инициализирует все другие переменные, генерируемые на MOC

    DBLayer dblayer = [[[DBLayer alloc] init];
    dblayer.moc = managedObjectContext;

Вы могли бы подумать, что вы можете скопировать весь сгенерированный код из делегата приложения на новый объект, и он будет работать нормально, но это не для меня.

Итак, в основном, мой вопрос заключается в том, что вам нужно создать управляемый объект ObjectContext в делетете приложения и передать его кому бы то ни было, или есть способ simpiler?

Причина, по которой я прошу, состоит в том, что есть некоторые объекты, которые должны выполнять вызовы базы данных, и мне нужно передать экземпляр managedObjectContext им из делегата приложения.

Спасибо всем, что ответить

ответ

0

Ответ строго зависит от ваших потребностей приложения. Например, вашему приложению может потребоваться несколько контекстов, обрабатываемых несколькими различными потоками, или вы можете иметь, как в случае, описанном вами, только один контекст. В последнем случае очевидный/общий способ управления этим - это точно передать контекст управляемого объекта контроллеру, который в нем нуждается.

0

В моем проекте, большинство из моих «CoreData Стек» был перепечатывать с использованием шаблона CoreData в качестве примера. Код в делетете приложения по сути создает экземпляр базового стека данных, получает готовые магазины, все эти забавные вещи.

Главный объект, с которым вы собираетесь иметь дело (большую часть времени), представляет собой управляемый объектный контекст. Совершенно нормально проходить один и тот же (в большинстве случаев там - раз, когда вам понадобится другой, и их нужно объединить, но это редко). То, что я делаю, - передать делегату приложения MOC до моего контроллера корневого представления, который затем передает его на любые другие контроллеры представлений, которые в этом нуждаются.

Итак, создайте стек в App Delegate, а затем передайте этот Контекст управляемого объекта в свои контроллеры представлений по мере необходимости (альтернатива - просто получить доступ к нему напрямую, как один синглтон, из вашего App Delegate, когда это необходимо. Таким образом, вам не нужно передавать его через весь навигационный стек, его можно просто извлечь, когда это необходимо. Это не то, что я сделал, но это, безусловно, правильный способ доступа к вашему стеку).

Смежные вопросы