CoreData 练习

概念

Core Data是iOS5之后才出现的一个框架,它提供了对象-关系映射(ORM)的功能,即能够将OC对象转化成数据,保存在SQLite数据库文件中,也能够将保存在数据库中的数据还原成OC对象。在此数据操作期间,我们不需要编写任何SQL语句,这个有点类似于著名的Hibernate持久化框架,不过功能肯定是没有Hibernate强大的.

  • NSManagedObjectContext 操作数据库的上下文
  • NSManagedObjectModel 模型文件对象(相当于数据库)
  • NSPersistentStoreCoordinator 持久化调度器关联上面的模型文件对象也是NSManagedObjectContext 必须设置的属性.
  • NSEntityDescription 数据实体 相当于表(也就是我们的一个表对应一个对象)

初始化操作

    // 创建上下文对象
self.context = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSMainQueueConcurrencyType];
NSManagedObjectModel *model = [NSManagedObjectModel mergedModelFromBundles:nil];

//设置 数据库存储路径
NSString * path = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)lastObject]stringByAppendingPathComponent:@"student.sqlite"];
NSURL * fileUrl = [NSURL fileURLWithPath:path];

// 持久化调度器 关联模型
NSPersistentStoreCoordinator * store = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:model];
NSError * error = nil;
//设置持久化调度器 数据库路径
[store addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:fileUrl options:nil error:&error];


//设置上下文 持久化调度器
self.context.persistentStoreCoordinator = store;

插入数据

Student * student = [NSEntityDescription insertNewObjectForEntityForName:@"Student" inManagedObjectContext:self.context];

student.name =@"fdf";
student.age = @(10);

NSError * error = nil;
[self.context save:&error];

if (!error) {
    NSLog(@"success");
    
}else{
    NSLog(@"%@",error);
}

待续........

你可能感兴趣的:(CoreData 练习)