Core Data / iPhone SDK вопрос? - PullRequest
       9

Core Data / iPhone SDK вопрос?

0 голосов
/ 22 сентября 2009

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

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

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

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

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

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

Спасибо за этот ответ

Ответы [ 2 ]

0 голосов
/ 22 сентября 2009

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

0 голосов
/ 22 сентября 2009

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...