数据处理之CoreData
一、CoreData数据库框架与Sqlite对比
Sqlite:
1、基于C接口, 需要使用sql语句, 代码繁琐
2、在处理大量数据时, 表关系更直观
3、在OC中不是可视化的
CoreData:
1、 可视化, 有undo/redo能力
2、可以实现多种文件格式NSSQLiteStoreType、NSBinaryStoreType、NSInMemoryStoreType、NSXMLStoreType
3、苹果官方API支持, 与iOS结合更紧密
二、CoreData核心对象
实体管理类:NSManagedObject
实体描述类:NSEntityDescription(用来描述实体类)
数据模型器类:NSManagedObjectModel(代表CoreData的模型文件)
数据管理器类:NSManagedObjectContext (数据库上下文管理对象)
数据连接器:NSPersistentStoreCoordinator (持久化存储调节器)
数据模型器类:NSManagedObjectModel (管理对象)
三、CoreData数据库的简单操作
切换可视化关系图
添加数据操作:
- (void)addPerson {
//添加步骤
//1: 创建person实体对象, 然后告诉"context", 让它做好准备, 将这个对象添加到数据库中
//实例对象有两种方式 [初始化对象需要借用NSEntityDescription]
//第一种
// Person *person = [NSEntityDescription insertNewObjectForEntityForName:@"person" inManagedObjectContext:self.managedObjectContext];
//第二种
//创建一个entity实体
NSEntityDescription *entityDescription = [NSEntityDescription entityForName:@"Person" inManagedObjectContext:self.managedObjectContext];
//创建person对象
Person *per = [[Person alloc]initWithEntity:entityDescription insertIntoManagedObjectContext:self.managedObjectContext];
//2.给对象属性赋值
per.personName = @"MBBoy";
per.personGender = @"Unknow";
per.personAge = @10;
//将车的对象通过实体描述类创建出来
Car *audiCar = [NSEntityDescription insertNewObjectForEntityForName:@"Car" inManagedObjectContext:self.managedObjectContext];
audiCar.price = @300000;
audiCar.color = @"白色";
audiCar.brand = @"奥迪A7";
Car *benchiCar = [NSEntityDescription insertNewObjectForEntityForName:@"Car" inManagedObjectContext:self.managedObjectContext];
benchiCar.price = @500000;
benchiCar.color = @"红色";
benchiCar.brand = @"奔驰SUV";
//将两辆车放在集合中存储然后进行赋值
NSSet *carSet = [NSSet setWithObjects:audiCar, benchiCar, nil];
per.personCar = carSet;
//3.将对象存入数据库
BOOL result = [_managedObjectContext save:nil];
//4.判断是否插入成功
if (result) {
NSLog(@"添加数据成功");
} else {
NSLog(@"添加数据失败");
}
}
版本更换:
选中Relationships --> Editor --> Add Model Version
浙公网安备 33010602011771号