Demo parsing for iOS coredata multi-Table query (2) -- insert Test Data
1. query Michael Zhang of the HR department
// Query the salary levels of Michael Jacob in the Development Department
Nslog (@ "---------- query the salary grade of Michael Jacob in the Development Department ----------");
Nslog (@ "---------- 1st Methods ----------");
// There are 1st Methods
Nsentitydescription * emety = [nsentitydescription entityforname: @ "employee" inmanagedobjectcontext: Self. managedobjectcontext];
Nsfetchrequest * frq = [[nsfetchrequest alloc] init];
[Frq setentity: emety];
Nspredicate * CDT = [nspredicate predicatewithformat: @ "em_name = % @", @ "James"];
[Frq setpredicate: CDT];
Nsarray * objs = [self. managedobjectcontext executefetchrequest: frq error: Nil];
Nspredicate * filter = [nspredicate predicatewithformat: @ "dept. dp_deptname = % @", @ "HR"];
Nsarray * ret = [objs filteredarrayusingpredicate: Filter];
Employee * r = (employee *) [RET lastobject];
Nslog (@ "% @", R. em_name );
Nslog (@ "% d", R. em_age );
Nslog (@ "% d", R. em_sex );
Nslog (@ "% @", R. em_bankcardid );
Nslog (@ "% @", R. Post. Salary. sy_level );
Nslog (@ "% F", R. Post. Salary. sy_scale );
Nslog (@ "% @", R. Bank. bk_name );
Nslog (@ "% @", R. Bank. bk_address );
// [Self. managedobjectcontext deleteobject: R];
// [Self savecontext];
Nslog (@ "---------- 2nd Methods ----------");
// There are 2nd Methods
Nsentitydescription * emety1 = [nsentitydescription entityforname: @ "department" inmanagedobjectcontext: Self. managedobjectcontext];
Nsfetchrequest * frq1 = [[nsfetchrequest alloc] init];
[Frq1 setentity: emety1];
Nspredicate * cdt1 = [nspredicate predicatewithformat: @ "dp_deptname = % @", @ "HR"];
[Frq1 setpredicate: cdt1];
Department * objs1 = [[self. managedobjectcontext executefetchrequest: frq1 error: Nil] lastobject];
Nsset * ret1 = objs1.employeeship;
Nspredicate * filter1 = [nspredicate predicatewithformat: @ "em_name = % @", @ "James"];
Employee * R1 = [[ret1 filteredsetusingpredicate: filter1] anyobject];
Nslog (@ "% @", r1.em _ name );
Nslog (@ "% d", r1.em _ age );
Nslog (@ "% d", r1.em _ sex );
Nslog (@ "% @", r1.em _ bankcardid );
Nslog (@ "% @", r1.post. Salary. sy_level );
Nslog (@ "% F", r1.post. Salary. sy_scale );
Nslog (@ "% @", r1.bank. bk_name );
Nslog (@ "% @", r1.bank. bk_address );
2. query O & M Department Ouyang
// Query the salary grade and account bank of the O & M Department named Ouyang
Nslog (@ "---------- query the salary grade of the O & M Department named Ouyang and the account opening bank ----------");
Nslog (@ "---------- 1st Methods ----------");
// There are 1st Methods
Nsentitydescription * entity = [nsentitydescription entityforname: @ "employee" inmanagedobjectcontext: Self. managedobjectcontext];
Nsfetchrequest * fetch = [[nsfetchrequest alloc] init];
[Fetch setentity: entity];
Nspredicate * qcmd = [nspredicate predicatewithformat: @ "em_name = % @", @ "Ouyang"];
[Fetch setpredicate: qcmd];
Nsarray * obs = [self. managedobjectcontext executefetchrequest: Fetch error: Nil];
Nspredicate * filter2 = [nspredicate predicatewithformat: @ "dept. dp_deptname = % @", @ "Dev"];
Nsarray * ret2 = [obs filteredarrayusingpredicate: filter2]; // filter data from the array.
Employee * r2 = [ret2 lastobject];
Nslog (@ "% @", r2.em _ name );
Nslog (@ "% d", r2.em _ age );
Nslog (@ "% d", r2.em _ sex );
Nslog (@ "% @", r2.em _ bankcardid );
Nslog (@ "% @", r2.post. Salary. sy_level );
Nslog (@ "% F", r2.post. Salary. sy_scale );
Nslog (@ "% @", r2.bank. bk_name );
Nslog (@ "% @", r2.bank. bk_address );
Nslog (@ "---------- 2nd Methods ----------");
// There are 2nd Methods
Nsentitydescription * emety3 = [nsentitydescription entityforname: @ "department" inmanagedobjectcontext: Self. managedobjectcontext];
Nsfetchrequest * frq3 = [[nsfetchrequest alloc] init];
[Frq3 setentity: emety3];
Nspredicate * cdt3 = [nspredicate predicatewithformat: @ "dp_deptname = % @", @ "Dev"];
[Frq3 setpredicate: cdt3];
Department * objs3 = [[self. managedobjectcontext executefetchrequest: frq3 error: Nil] lastobject];
Nsset * ret3 = objs3.employeeship;
Nspredicate * filter3 = [nspredicate predicatewithformat: @ "em_name = % @", @ "Ouyang"];
Employee * R3 = [[ret3 filteredsetusingpredicate: filter3] anyobject];
Nslog (@ "% @", r3.em _ name );
Nslog (@ "% d", r3.em _ age );
Nslog (@ "% d", r3.em _ sex );
Nslog (@ "% @", r3.em _ bankcardid );
Nslog (@ "% @", r3.post. Salary. sy_level );
Nslog (@ "% F", r3.post. Salary. sy_scale );
Nslog (@ "% @", r3.bank. bk_name );
Nslog (@ "% @", r3.bank. bk_address );
Multi-table queries mainly involve establishing correlation relationships between tables, and fully using the nspredicate query condition for filtering.