Где получить контекст управляемого объекта в NSPersistentDocument?
Кажется, что есть некоторая информация для использования Core-data с приложениями на основе документов. У меня есть контроллер окна, который запускает модальное окно в текущем документе. Пользователь вводит данные в текстовое поле, которое создает изменяемый массив строк, который я хочу использовать для создания объектов модели (для отношения "многие ко многим"), а затем сохраняю их в стеке данных ядра. Этот метод у меня в контроллере модального окна.
- (IBAction)saveContext:(id)sender {
if ([tagsArray count] != 0) {
int objectcount;
for (objectcount = 0; objectcount < [tagsArray count]; objectcount ++){
Tag *singleTag = (Tag *) [NSEntityDescription insertNewObjectForEntityForName:@"Tag" inManagedObjectContext:self.managedObjectContext];
singleTag.tagname = [tagsArray objectAtIndex:objectcount];
singleTag.video = selectedFile;
NSLog(@"Tagnames %@",singleTag.tagname);
}
}
[NSApp stopModalWithCode:NSOKButton];
[self.window close];
}
Хорошо, компилятор не доволен self.managedObjectContext. Понятно, что у этого класса нет контекста. Насколько я понимаю, с приложением на основе документа вы хотите использовать только один MOC. Чего я не понимаю, так это как получить доступ к MOC документа. Документы Apple немного неясны.
Получение контекста управляемого объекта
В OS X:
В приложениях с одним координатором вы можете получить контекст приложения непосредственно из делегата приложения.
В основанных на документе приложениях вы можете получить контекст непосредственно из экземпляра документа.
Мне стыдно сказать, что я не знаю, что это значит. Как получить контекст из экземпляра документа? Это какая-то глобальная переменная? Любая помощь с благодарностью.
2 ответа
Когда вы создаете модальное окно, передайте ему документы managedObjectContext
использовать.
Так что, возможно, есть свойство в классе контроллера для модального окна и установить, что modalWindow.moc=self.managedObjectContext
до звонка modalWindow.show
или что вы используете. Если предположить, self
ваш подкласс NSPersistentDocument.
Вы должны использовать существующие документы MOC, не создавайте новый (вы можете, но не хотите туда идти).
Документы MOC - это ваша окончательная точка доступа для добавления объектов в хранилище базовых данных.
NSPersistentDocument
имеет managedObjectContext
метод для получения контекста управляемого объекта:
NSManagedObjectContext *context = [yourPersistentDocument managedObjectContext];