Мое приложение - это просто БД, где пользователь просто ищет некоторые научные данные. Это построено так:
-Он должен иметь «основные» представления, выбираемые с помощью TabBarViewController.
-Первый вид, когда пользователь просто переходит к поисковому запросу.
-Второй вид - только некоторые настройки, информация и информация об отказе от ответственности.
Я использовал второе представление для предварительного заполнения БД, которая будет поставляться вместе с приложением. Теперь, когда он заполнен, я собираюсь реализовать настройки, информацию и т. Д.
managedObjectContext устанавливается в AppDelegate (applicationDidFinish ...), например:
firstViewViewController.managedObjectContext = self.managedObjectContext;
secondViewController.managedObjectContext = self.managedObjectContext;
saveCustom.managedObjectContext = self.managedObjectContext;
self.window.rootViewController = self.tabBarController;
[self.window makeKeyAndVisible];
return YES;
УправляемыйObjectContext объявлен и правильно синтезирован во втором ViewController.
Приложение пока работает нормально, и я могу сохранять элементы в БД.
Теперь я создал modalView, который вызывается из firstViewController. Я хочу, чтобы пользователь мог сохранять пользовательские данные. Для этого я продублировал то, что сделал в secondViewController, и добавил соответствующий код (или то, что я думаю) в AppDelegate (см. Выше).
Когда я пытаюсь сохранить данные с помощью modalVIew, я получаю следующую ошибку.
* Завершение работы приложения из-за необработанного исключения «NSInternalInconsistencyException», причина: «+ entityForName: не удалось найти NSManagedObjectModel для имени объекта XXX
где XXX - правильное имя моей сущности.
Я знаю, что это что-то связанное с не инициализированным managedObjectContext. Но я не понимаю, почему он работает на secondViewController, а не на modalViewController.
Так, как я могу заставить это работать?
Я знаю, что импорт AppDelegate в modalView, хотя он и будет работать, не очень хорошая практика.
Заранее спасибо!
Edit:
Код, который я использую для сохранения данных, выглядит следующим образом:
-(void)saveDataToCD{
NSString *entityString=[NSString stringWithFormat:@"%@",[arrayAdquiritDelMV objectAtIndex:1]];
NSString *deltaString=[NSString stringWithFormat:@"%@",[arrayAdquiritDelMV objectAtIndex:3]];
NSManagedObjectContext *context = [self managedObjectContext];
NSManagedObject *pepe = [NSEntityDescription insertNewObjectForEntityForName:entityString inManagedObjectContext:context]; // aqui un string
[pepe setValue:assigment.text forKey:@"definition"];
[pepe setValue:impurity.text forKey:@"impurity"];
[pepe setValue:[NSNumber numberWithDouble:[delta.text doubleValue]] forKey:deltaString]; //aquí un string
NSError *error;
if (![context save:&error])
{
NSLog(@"Problem saving: %@", [error localizedDescription]);
}}
Edit # 2, вот как я называю модальное представление:
-(IBAction)saveCustom:(id)sender{
if(saveCustomController == nil)
{
SaveCustom *viewTwo = [[SaveCustom alloc] initWithNibName:@"SaveCustom" bundle:[NSBundle mainBundle]];
self.saveCustomController = viewTwo;
[viewTwo release];
}
[self presentModalViewController:self.saveCustomController animated:YES];
}