Coredata的多表关联

来源:互联网 发布:心动网络 笔试 编辑:程序博客网 时间:2024/06/05 11:59

当你会使用单个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
原创粉丝点击