_水丹青

数据处理之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

 

 

 

posted on 2016-05-06 19:45  大一号  阅读(116)  评论(0编辑  收藏  举报

导航