2012-03-03 65 views
0

我正在关注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

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

核心数据是一个对象持久化框架 - 所以在这个意义上它确实保存数据。它坚持封装在托管对象模型中的对象图。

+0

我看到这个词'坚持'与核心数据很多,但不明白究竟是什么意思.. – Snowman 2012-03-03 20:32:51

+2

坚持是保存在这样的方式,它可以再次检索。 – FluffulousChimp 2012-03-03 20:37:35