Как работает метод сохранения в Core Data?
Я следую руководству по основным данным, и они реализуют метод действия, чтобы предварительно сохранить данные в базе данных, используя ManagedObject
, Я понимаю весь код в методе, кроме метода, который, как они говорят, преформует сохранение, и мне кажется, что метод проверяет, есть ли ошибка, и если да, то есть NSLog
распечатать чтобы произошла ошибка. это метод:
- (IBAction)save:(id)sender {
NSManagedObjectContext *context = [self managedObjectContext];
// creating a new managed object
NSManagedObject *newDevice = [NSEntityDescription insertNewObjectForEntityForName:@"Device" inManagedObjectContext:context];
[newDevice setValue:self.nameTextField.text forKey:@"name"];
[newDevice setValue:self.versionTextField.text forKey:@"version"];
[newDevice setValue:self.companyTextField.text forKey:@"company"];
NSError *error = nil;
if (![context save:&error]) {
NSLog(@"Can't Save! %@ %@", error, [error localizedDescription]);
}
[self dismissViewControllerAnimated:YES completion:nil];
}
Очевидно, что-то происходит в [context save:&error]
этот звонок, который я бы любил, если вы можете объяснить, что?
1 ответ
Призвание save:
Сохраняет изменения, внесенные в граф объекта в определенном контексте, и поднимает его на один уровень выше.
Каждый контекст содержит свою собственную ревизию, и когда вы звоните save:
изменения вносятся либо на один уровень выше (в родительский контекст), либо, если родительский контекст отсутствует, в координатор хранилища, чтобы их можно было сохранить методом, указанным при открытии координатора (SQLite, XML, двоичный файл и т. д.),
Изменения могут быть изменениями, вставками или удалениями.
Перед сохранением изменения объектов проверяются, и объекты уведомляются о процессе сохранения.
После сохранения в систему отправляются уведомления, чтобы сообщить различным компонентам (таким как контроллеры получения результатов, ваш код и т. Д.) О том, что была выполнена операция сохранения.