建立不只單一的數(shù)據(jù)表
選擇關(guān)聯(lián)模式
編輯代碼
1.第一種:一對(duì)一//數(shù)據(jù)庫(kù)里面:一個(gè)表對(duì)應(yīng)一個(gè)表的操作(一對(duì)一)? ??
Car *car = [NSEntityDescription insertNewObjectForEntityForName:@"Car" inManagedObjectContext:app.managedObjectContext];? ??
car.namee = @"BMW";
//插入數(shù)據(jù)? ?
?People *p = [NSEntityDescription insertNewObjectForEntityForName:@"People" inManagedObjectContext:app.managedObjectContext];? ? p.name = @"YY";? ??
//關(guān)聯(lián)people和car兩個(gè)表? ??
p.car = car;
//保存數(shù)據(jù)??
? [app saveContext];
//查詢數(shù)據(jù)? ? //查詢請(qǐng)求? ??
NSFetchRequest *req = [[NSFetchRequest alloc] initWithEntityName:@"People"];? ?
?NSArray *result = [app.managedObjectContext executeFetchRequest:req error:nil];
//pp.car.namee 通過 查詢people的數(shù)據(jù),間接可以獲得car的數(shù)據(jù)? ?
?for (People *pp in result) {? ? ? ??
NSLog(@"%@---%@",pp.name,pp.car.namee);??
? }
////////////////////////////////////////////////////////////////////////////
2.第二種:一對(duì)多//對(duì)于一表對(duì)應(yīng)多個(gè)數(shù)據(jù)表
//在創(chuàng)建時(shí),一級(jí)類的.h文件中會(huì)出現(xiàn)四個(gè)帶有二級(jí)類的方法,如下
//(Car *)- (void)addCarObject:(Car *)value
;- (void)removeCarObject:(Car *)value;
- (void)addCar:(NSSet*)values;
- (void)removeCar:(NSSet*)values;
//人車關(guān)聯(lián)(關(guān)聯(lián)people和car兩個(gè)表)
//NSSet 集合? 內(nèi)部對(duì)象是無序的
[p addCar:[NSSet setWithObjects:car,car1,car2,car3, nil]];
//兩種添加方式
[p addCarObject:car4];
//保存數(shù)據(jù)
[app saveContext];
//查詢數(shù)據(jù)
//先找人 后找人的車
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"People"];
NSArray *result = [app.managedObjectContext executeFetchRequest:request error:nil];
for (People *p in result) {
NSLog(@"People.name = %@",p.name);
}
People *pp = result[0];
for (Car *car in pp.car) {
NSLog(@"car.name = %@",car.name);
}
////////////////////////////////////////////////////////////////////////////
3.第三種:互相關(guān)聯(lián)
//互相'賦值'
car.people = p;
p.car = car;
[app saveContext];
NSFetchRequest *req = [NSFetchRequest fetchRequestWithEntityName:@"People"];
NSArray *arr = [app.managedObjectContext executeFetchRequest:req error:nil];
//根據(jù)相互對(duì)應(yīng)的關(guān)系,來間接查詢另一張表的數(shù)據(jù)
for (People *p in arr) {
NSLog(@"%@--%@",p.name,p.car.name);
}