Не позволяйте своему уму стать ограничен каким-либо требованием размещения основной стек данных в файл реализации делегата приложения.
У меня есть надежный и многоуровневый граф объектов ядра данных, стек которого строятся в отдельном классе я называю EstablishCoreData
и я видел другие, что имя это так же CoreDataStack
и т.д.
В моих didFinishLaunchingWithOptions
метод меня одну строку ...
[self configureCoreData];
, что относится к этому приложению делегат пользовательский метод ...
- (void)configureCoreData {
// Establish connection to EstablishCoreData
if (!connectCoreData)
connectCoreData = [[EstablishCoreData alloc] init];
// Initiate Core Data stack and set the managedObjectContexts PRIVATE & MAIN
if (!self.appDelegatePrivate || !self.appDelegateMain) {
[connectCoreData configureCoreDataStack];
[self setAppDelegatePrivate:connectCoreData.mocPrivate];
[self setAppDelegateMain:connectCoreData.mocMain];
NSLog(@"\n%@ - %@ -> Confirm CORE DATA configured with\nNEW managedObjectContext PRIVATE: %@ and\nNEW managedObjectContext MAIN: %@_\n\n", self.className, NSStringFromSelector(_cmd), self.appDelegatePrivate, self.appDelegateMain);
} else {
NSLog(@"\n%@ - %@ -> Confirm CORE DATA already configured with\nEXISTING managedObjectContext PRIVATE: %@ and\nEXISTING managedObjectContext MAIN: %@_\n\n", self.className, NSStringFromSelector(_cmd), self.appDelegatePrivate, self.appDelegateMain);
}
}
очевидно, что в фоновом режиме больше работает.
В частной декларации моего приложения делегата я включаю ...
@interface AppDelegate() {
EstablishCoreData *connectCoreData;
}
и наиболее важные из этих линий относится к пользовательской методе в моем классе EstablishCoreData
, который пинает весь на место, будучи ...
[connectCoreData configureCoreDataStack];
Этот обычай метод в моих пользовательских классов определяет и/или конкретизирует мой:
NSURL *modelURL;
NSManagedObjectModel *managedObjectModel;
NSURL *storeURL;
NSPersistentStoreCoordinator *persistentStoreCoordinator;
NSPersistentStore *persistentStore;
и, конечно, устанавливает:
- главный
NSMananagedObjectContext
и
- частных
NSMananagedObjectContext
.
В моем основном и начальном контроллере представления - вид таблицы контроллер - I включает следующее общие переменные ...
@property (nonatomic, strong) NSManagedObjectContext *managedObjectContextPrivate;
@property (nonatomic, strong) NSManagedObjectContext *managedObjectContextMain;
и следующий код реализации ...
- (void)viewDidLoad {
[super viewDidLoad];
appDelegate = (DD_AppDelegate *)[[UIApplication sharedApplication] delegate];
[self setManagedObjectContextPrivate:appDelegate.appDelegatePrivate];
[self setManagedObjectContextMain:appDelegate.appDelegateMain];
...<< etc other code as required >>...
}
Все происходит красиво вниз по течению оттуда, используя иерархию диспетчера изображений.
Прочтите замечательную книгу Маркуса С Зарры из «Прагматической книжной полки» «Основные данные, второе издание, хранилище данных и управление для iOS, OS X и iCloud» (январь 2013 г.).
Также стоит упомянуть издательства Apress, «Персистентность Pro iOS с использованием основных данных», Майкл Приват и Роберт Уорнер.
Благодарим вас за столь подробный и тщательный ответ! – Adrian