Есть ли способ получить NSManagedObjectContext без необходимости каждый раз вызывать мой AppDelegate? - PullRequest
3 голосов
/ 06 февраля 2011

Я создал приложение из шаблона XCode и выбрал «Базовые данные» в качестве опции, поэтому все делегаты базовых данных и основные методы будут включены в файлы AppDelegate.

Теперь каждый раз, когда яЯ должен получить контекст для использования Core Data, я использую следующий код:

MovieCatalogAppDelegate *appDelegate = (MovieCatalogAppDelegate *)[[UIApplication sharedApplication] delegate];
NSManagedObjectContext *context = [appDelegate managedObjectContext];

Есть ли какой-либо способ получить managedObjectContext без необходимости прямого вызова MovieCatalogAppDelegate?Я хочу сделать это общим вызовом, чтобы мои файлы данных не обязательно были связаны с MovieCatalogAppDelegate.h.По сути, я пытаюсь отделить код и сделать вещи более динамичными без необходимости знать прямые имена.

Спасибо.

Ответы [ 2 ]

5 голосов
/ 06 февраля 2011

Есть несколько вариантов.

  1. Вы можете переместить код поддержки основных данных в класс, отличный от делегата приложения. Сделайте его синглтоном, если хотите.

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

  3. Если у вас есть NSManagedObject, который вы уже передаете, вы можете получить NSManagedObjectContext от managedObjectContext указанного объекта.

Есть некоторые идеи в этой статье о CIMGF.

4 голосов
/ 06 февраля 2011

Официальный ответ (документация Apple) состоит в том, что у вас должен быть указатель на managedObjectContext в каждом из классов, которые будут его использовать, и передавать его по всем другим объектам, которые его используют.Вы можете установить его как свойство вашего UIViewControllers (или любого другого объекта) и установить его при создании;поэтому в вашем коде вам просто нужно позвонить:

self.managedObjectContext

Вместо того, чтобы идти до делегата полностью.Я обновлю ответ.

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