1、先认识一下这几个类
(1)NSManagedObjectContext(被管理的数据上下文)
作用:用来管理所有表的操作, 对表的实体对应的数据库中的表的操作(插入,查询,修改,删除)
(2)NSManagedObjectModel(被管理的数据模型, 对应.momd文件)
数据库所有表格或数据结构,包含各实体的定义信息
作用:添加实体的属性,建立属性之间的关系
(3)NSPersistentStoreCoordinator(数据库的连接器, 持久化存储助理)
作用:用来管理数据库的,可以设置数据存储的名字,位置,存储方式,和存储时机
(4)NSManagedObject(被管理的数据记录)
相当于数据库中的表格记录
(5)NSFetchRequest(获取数据的请求)
相当于查询语句
(6)NSEntityDescription(实体结构 对应单个表)
相当于表结构
(7)后缀为.xcdatamodeld的包 (CoreData的模型文件)
数据模型编辑器 编译后为.momd或.mom文件
作用:描述app中的所有实体和实体属性
2、实现表操作(插入、查询、修改、删除)
(1)插入数据
//1、插入数据
//创建一个需要插入到Person表中的新数据对象person1
Person *person1 = [NSEntityDescription insertNewObjectForEntityForName:@"Person" inManagedObjectContext:self.managedObjectContext];
person1.name = @"王五";
person1.age = [NSNumber numberWithInt:99];
//保存。 调用save:方法 实现对数据库中Person表的插入操作
[self.managedObjectContext save:nil];
(2)查询数据
//2、查询数据
//获取Person表的实体对象
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Person" inManagedObjectContext:self.managedObjectContext];
//创建查询请求
NSFetchRequest *request = [[NSFetchRequest alloc] init];
request.entity = entity; //设置需要查询的是哪个表
//执行查询操作
NSArray *array = [self.managedObjectContext executeFetchRequest:request error:nil];
for (Person *person in array) {
NSLog(@"查询结果:%@, %d", person.name, [person.age intValue]);
}
(3)修改数据
//3、修改数据
//先查询到数据,然后再修改
NSArray *array1 = [self.managedObjectContext executeFetchRequest:request error:nil];
//执行修改: 将名称改为“李四”,将年龄改为30
for (Person *person in array1) {
person.name = @"李四";
person.age = [NSNumber numberWithInt:30];
}
//保存。 调用save:方法 实现对数据库中Person表的修改操作
[self.managedObjectContext save:nil];
//执行查询操作
NSArray *array11 = [self.managedObjectContext executeFetchRequest:request error:nil];
for (Person *person in array11) {
NSLog(@"修改后:%@, %d", person.name, [person.age intValue]);
}
(4)删除数据
//4、删除数据
//查询到数据,然后再删除
NSArray *array2 = [self.managedObjectContext executeFetchRequest:request error:nil];
//执行删除: 删除zhangsan
for (Person *person in array2) {
if ([person.name isEqualToString:@"zhangsan"]) {
[self.managedObjectContext deleteObject:(NSManagedObject *)person];
}
}
//保存。 调用save:方法 实现对数据库中Person表的删除操作
[self.managedObjectContext save:nil];
//执行查询操作
NSArray *array22 = [self.managedObjectContext executeFetchRequest:request error:nil];
for (Person *person in array22) {
NSLog(@"删除后:%@, %d", person.name, [person.age intValue]);
}