Приложение Master-Detail с базовыми данными - PullRequest
0 голосов
/ 08 января 2012

Из шаблона Master-Detail Xcode 4.2 (для iPad) с Core Data я изменил модель данных и добавил дополнительные объекты текстового представления в файл пера.

Код для перемещения данных из управляемого объекта в интерфейсные объекты находится в ConfigureView в DetailViewController и работает нормально.

Сейчас я пытаюсь автоматически сохранить данные объекта интерфейса в данные управляемого объекта при переходе от одного элемента к другому во всплывающем окне.

Я добавил код для сохранения в viewWillDisappear в DetailViewController, но это, похоже, не срабатывает. Я что-то упустил?

- (void)configureView { // Update the user interface for the detail item.
  if (self.detailItem) {
    self.sname.text = [self.detailItem valueForKey:@"sname"];
    self.saddress.text = [self.detailItem valueForKey:@"saddress"];
  }
}


- (void)viewWillDisappear:(BOOL)animated {
  [self.detailItem setValue: self.sname.text forKey:@"sname"];
  [self.detailItem setValue: self.saddress.text forKey:@"saddress"];

  NSError *error; if (![self.detailItem.managedObjectContext save:&error]) {
    NSLog(@"Unresolved error %@, %@",error,[error userInfo]);
    exit(-1); //fail
  }

  [super viewWillDisappear:animated];
}

1 Ответ

1 голос
/ 08 января 2012

Во-первых, в приложении MasterDetail detailViewController обычно всегда виден и не исчезает.Вот почему viewWillDisappear не вызывается.Конечно, я не уверен в деталях архитектуры вашего приложения, поэтому я могу ошибаться.

Во-вторых, рассмотрим вариант использования, если пользователь изменяет некоторые данные, а затем переключается на другое приложение.Затем, находясь в другом приложении, система завершает работу вашего приложения.Изменения, сделанные вашим пользователем, будут потеряны и будут противоречить ожиданиям.

Если вы не сохраняете много данных для интерфейса в detailViewController, рассмотрите возможность сохранения данных после того, как пользователь изменит данные в интерфейсе. скорее , чем когда пользователь переключается с управляемого объекта на управляемый объект в popoverViewController.т. е. когда пользователь редактирует некоторые данные в текстовом поле или текстовом поле, сохраните файл managedObjectContext.

Удачи!

...