美文网首页iOS数据持久化ios技术myls
CoreData 的简单使用__ 03.表之间的关联

CoreData 的简单使用__ 03.表之间的关联

作者: _李布斯 | 来源:发表于2015-05-10 16:01 被阅读687次

    1.我们在 Company.xcdatamodeld 里面新建一张表 Department,里面添加几个字段。

    图1

    2.然后我们在Employee 表里面设置关联。

    图2

    3.最后我们生成模型文件,如图:

    4.弄好这些后 我们来看看如何使用:

    (1)首先创建上下文 这里就不多复述了 详见《CoreData 的简单使用__ 01》

    (2)然后我们来添加信息 两个员工,一个属于iOS 一个属于Android

    -(void)addEmployee{

    //创建两个部门ios android

    Department *iosDepart = [NSEntityDescription insertNewObjectForEntityForName:@"Department"inManagedObjectContext:_context];

    iosDepart.name=@"iOS";

    iosDepart.departNo=@"0001";

    iosDepart.createDate= [NSDatedate];

    Department *andrDepart = [NSEntityDescription insertNewObjectForEntityForName:@"Department"inManagedObjectContext:_context];

    andrDepart.name=@"android";

    andrDepart.departNo=@"0002";

    andrDepart.createDate= [NSDatedate];

    //创建两个员工对象zhangsan属于ios部门lisi属于android部门

    Employee *zhangsan = [NSEntityDescription insertNewObjectForEntityForName:@"Employee"inManagedObjectContext:_context];

    zhangsan.name=@"zhangsan";

    zhangsan.height=@(1.90);

    zhangsan.birthday= [NSDate date];

    zhangsan.depart= iosDepart;

    Employee *lisi = [NSEntityDescription insertNewObjectForEntityForName:@"Employee"inManagedObjectContext:_context];

    lisi.name=@"lisi";

    lisi.height=@2.0;

    lisi.birthday= [NSDate date];

    lisi.depart= andrDepart;

    //直接保存数据库

    NSError*error =nil;

    [_context save:&error];

    if(error) {

    NSLog(@"%@",error);

    }

    }

    (3) 添加完信息后我们来读取下:

    -(void)readEmployee {

    // 1.FectchRequest抓取请求对象

    NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Employee"];

    // 2.设置过滤条件

    NSPredicate*pre = [NSPredicate predicateWithFormat:@"depart.name = %@",@"iOS"];

    request.predicate= pre;

    // 4.执行请求

    NSError*error =nil;

    NSArray*emps = [_context executeFetchRequest:requesterror:&error];

    if(error) {

    NSLog(@"error");

    }

    //NSLog(@"%@",emps);

    //遍历员工

    for(Employee*emp in emps) {

    NSLog(@"名字%@部门%@",emp.name,emp.depart.name);

    }

    }

    运行结果如下:

    到这里CoreData的简单使用就差不多结束了,相信大家掌握这些基本的用法后对CoreData也能够入门了,如果想系统的学习CoreData的同学可以 买 《Core Data 应用开发实践指南》 这本书看看。

    相关文章

      网友评论

      • 863c73f31933:楼上我这边进行coredata迁移的时候crash啦,知道是什么原因导致的不?

      本文标题:CoreData 的简单使用__ 03.表之间的关联

      本文链接:https://www.haomeiwen.com/subject/ztrzfttx.html