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