了解核心数据保存

时间:2012-03-03 20:18:19

标签: objective-c core-data

我正在关注this核心数据教程,有一件事令我困惑。让我们说:

NSManagedObjectContext *context = [self managedObjectContext];
NSManagedObject *failedBankInfo = [NSEntityDescription
    insertNewObjectForEntityForName:@"FailedBankInfo" 
    inManagedObjectContext:context];
[failedBankInfo setValue:@"Test Bank" forKey:@"name"];
[failedBankInfo setValue:@"Testville" forKey:@"city"];
[failedBankInfo setValue:@"Testland" forKey:@"state"];
NSManagedObject *failedBankDetails = [NSEntityDescription
    insertNewObjectForEntityForName:@"FailedBankDetails" 
    inManagedObjectContext:context];

NSError *error;
if (![context save:&error]) {
    NSLog(@"Whoops, couldn't save: %@", [error localizedDescription]);
}

我已经读过CoreData实际上不是用于存储数据,而是用于管理数据,而CoreData的后备存储是SQLite。那么当应用程序会话终止时,我在上面添加的这些数据会发生什么?我运行如上所述的代码时,数据是否会自动保存到某些SQLite文件中?或者每次启动应用程序时核心数据都是空的,除非我按照一些特定的操作来填充它?

1 个答案:

答案 0 :(得分:1)

NSManagedObjectContext上的save:方法将未保存的更改提交到持久性存储。 (顺便说一句,持久性存储类型可能是sqlite;但也是其他持久性存储类型。)在示例代码中,您所做的更改将持久保存到持久性存储。

核心数据是一个对象持久性框架 - 因此从这个意义上来说它确实可以保存数据。它会持久化封装在托管对象模型中的对象图。