Coredata的多表关联

当你会使用单个Coredata数据库表了,那你就会想到,如果两张表有一定的关联了。而且经常会有根据互相关联的表去查找。

其实Coredata的多表关联,以及关联查找功能并没有sqlite3的强大,所以了,如果遇到复杂和太多表的关联情况,意见使用sqlite3或者是对它封装的第三方框架FMBD。Coredat的多表关联,就是建立在简单的使用的基础上添加几点就可以了,如果还不会使用Coredata,可以先进入简单的使用:
http://blog.csdn.net/mjx342112780/article/details/52084297

一、在建立model的实体的时候,先建立子表实体的信息,然后在建立父表实体的信息,在Relationships中建立联接关系。

二、同样生生成两个表的实体类NSManageObject subclass,基中在建立的实体类中,你会发现它会出出以第一个实体类为属性的字段存在,这个就是关联属性。

三、代码使用不同的一些地方,这里我只举例,增加和查找,其他的CURD可以类推
1.增加时

- (IBAction)addMebersAction:(id)sender {
    //    创建部门
    Department *dep1=[NSEntityDescription insertNewObjectForEntityForName:@"Department" inManagedObjectContext:self.companyContext];
    dep1.name=@"iOS";
    dep1.creatDate=[NSDate date];
    dep1.departNo=@"00000100";
//    创建zhangsan
    Employee *emp1 =[NSEntityDescription insertNewObjectForEntityForName:@"Employee" inManagedObjectContext:self.companyContext];
    emp1.name=@"zhangsan";
    emp1.height=@1.8;
    emp1.age=@25;
    emp1.depart=dep1;

    [self.companyContext save:nil];
}

2.查找时

- (IBAction)findMebersAction:(id)sender {

    NSFetchRequest *request =[NSFetchRequest fetchRequestWithEntityName:@"Employee"];
    NSPredicate *pre =[NSPredicate predicateWithFormat:@"depart.name=%@",@"iOS"];//以点语法可以去查找
    request.predicate= pre;

   NSArray *emps = [self.companyContext executeFetchRequest:request error:nil];
    NSLog(@"%@",emps);

}

更新和删除都可以以此类推。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值