Core Data中的save方法如何工作?

时间:2014-04-16 00:21:49

标签: objective-c core-data nsmanagedobject nsmanagedobjectmodel

我跟踪核心数据中的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]这个电话会发生一些事情,如果你能解释一下,我会喜欢这个电话吗?

1 个答案:

答案 0 :(得分:1)

调用save:会持续对特定上下文中的对象图所做的更改,并将其提升到上一级。

每个上下文都包含自己的变更集,当您调用save:时,更改要么在上一级(到其父上下文),要么在没有父上下文的情况下,到商店协调器要在打开协调器时指定的方法(SQLite,XML,二进制等)保持不变。

更改可以是修改,插入或删除。

保存之前,将验证对象的更改,并通知对象有关保存过程的信息。

保存后,会向系统发送通知,以便了解保存操作已发生的各种组件(如获取结果控制器,代码等)。