關于CoreData一些相關操作---數據表關聯

建立不只單一的數據表


在原本的基礎上,多建立entity,類似于多建立一個model,然后在Relationships中進行關聯
可選擇style可視化查看

選擇關聯模式


一對一
一對多


互相關聯模式1
互相關聯模式2
創建

編輯代碼

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);

}

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容