我正在关注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文件中?或者每次启动应用程序时核心数据都是空的,除非我按照一些特定的操作来填充它?
答案 0 :(得分:1)
NSManagedObjectContext上的save:
方法将未保存的更改提交到持久性存储。 (顺便说一句,持久性存储类型可能是sqlite;但也是其他持久性存储类型。)在示例代码中,您所做的更改将持久保存到持久性存储。
核心数据是一个对象持久性框架 - 因此从这个意义上来说它确实可以保存数据。它会持久化封装在托管对象模型中的对象图。