我跟踪核心数据中的guid,并实施了一种操作方法,使用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]
这个电话会发生一些事情,如果你能解释一下,我会喜欢这个电话吗?
答案 0 :(得分:1)
调用save:
会持续对特定上下文中的对象图所做的更改,并将其提升到上一级。
每个上下文都包含自己的变更集,当您调用save:
时,更改要么在上一级(到其父上下文),要么在没有父上下文的情况下,到商店协调器要在打开协调器时指定的方法(SQLite,XML,二进制等)保持不变。
更改可以是修改,插入或删除。
保存之前,将验证对象的更改,并通知对象有关保存过程的信息。
保存后,会向系统发送通知,以便了解保存操作已发生的各种组件(如获取结果控制器,代码等)。