一、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
时间: 2024-10-13 19:56:57