自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

IOS數(shù)據(jù)管理工具CoreData入門之雙向關(guān)系操作

移動開發(fā) iOS 數(shù)據(jù)管理
本文主要來介紹CoreData入門雙向關(guān)系的操作和學(xué)習(xí),根據(jù)實(shí)例的操作可以快速的去學(xué)習(xí)IOS數(shù)據(jù)庫管理工具coredata,先來看本文內(nèi)容。

IOS數(shù)據(jù)管理工具CoreData入門之雙向關(guān)系操作是本文要介紹的內(nèi)容,主要來介紹CoreData入門雙向關(guān)系的操作和學(xué)習(xí),不多說,我們先來看詳細(xì)內(nèi)容介紹。

雙向的時候,只用指定一邊,另外一邊自動指定,比如,如果一個帳號只有一個聯(lián)系人,而一個聯(lián)系人對應(yīng)一個帳號的話,那么帳號表和聯(lián)系人表就是一一對應(yīng)的關(guān)系,將他們指定為雙向的,如下面將cnt1.act = act1; cnt2.act = cnt2;則act1.cnt和act2.cnt也是有值的。注釋掉的兩句可有可無。

刪除規(guī)則

這里將Account表下面的cnt的刪除規(guī)則設(shè)定為cascade,則在刪除act1的時候,cnt1也被刪除了。而Contact表沒有將它下面的act的刪除規(guī)則設(shè)置為cascade,在刪除cnt1的時候,act1還存在。

一對多的關(guān)系

上面假設(shè)一個帳號只有一個聯(lián)系人是不合理的,那只是一種假設(shè),一般都是一個帳號下面有很多聯(lián)系人,這就是一對多的關(guān)系,上面的兩個法則也適用于這種關(guān)系,也就是說帳號下面的cnt設(shè)置為cascade,刪除一個帳號時,它所有的聯(lián)系人也被刪除了,而聯(lián)系人表下面的act設(shè)置為nullify,當(dāng)刪除一個聯(lián)系人的時候帳號表沒有變化。

  1.  Account *act1 = [NSEntityDescription insertNewObjectForEntityForName:@"Account" inManagedObjectContext:self.managedObjectContext];   
  2.   act1.passport = @"passport1";   
  3.   act1.password = @"password1";   
  4.   Account *act2 = [NSEntityDescription insertNewObjectForEntityForName:@"Account" inManagedObjectContext:self.managedObjectContext];   
  5.   act2.passport = @"passport2";   
  6.   act2.password = @"password2";   
  7.    Contact *cnt1 = [NSEntityDescription insertNewObjectForEntityForName:@"Contact" inManagedObjectContext:self.managedObjectContext];   
  8.  cnt1.passport = @"passport1";  
  9.   cnt1.nickname = @"nickname1";  
  10.  cnt1.act = act1;  
  11.  Contact *cnt2 = [NSEntityDescription insertNewObjectForEntityForName:@"Contact" inManagedObjectContext:self.managedObjectContext];  
  12.    cnt2.passport = @"passport2";  
  13.   cnt2.nickname = @"nickname2";  
  14.   cnt2.act = act2;  
  15. //    act1.cnt = cnt1;  
  16. //    act2.cnt = cnt2;      
  17.   [self.managedObjectContext save:nil];  
  18.   // Delete a Account  
  19.     NSFetchRequest *fr = [[NSFetchRequest alloc] init];  
  20.   NSEntityDescription *ed = [NSEntityDescription entityForName:@"Account" inManagedObjectContext:self.managedObjectContext];  
  21.   [fr setEntity:ed];  
  22.        NSArray *ary = [self.managedObjectContext executeFetchRequest:fr error:nil];  
  23.    for (Account *act in ary) {  
  24.       //NSLog(@"%@  %@  %@  %@", act.passport, act.password, act.cnt.passport, act.cnt.nickname);  
  25.          if ([act.passport isEqualToString:@"passport2"]) {  
  26.            NSLog(@"DEL passport2");  
  27.            [self.managedObjectContext deleteObject:act];  
  28.        }  
  29.    }  
  30.   [self.managedObjectContext save:nil];  
  31.   // Delete a Contact  
  32.    NSFetchRequest *fr = [[NSFetchRequest alloc] init];  
  33.    NSEntityDescription *ed = [NSEntityDescription entityForName:@"Contact" inManagedObjectContext:self.managedObjectContext];  
  34.   [fr setEntity:ed];  
  35.    NSArray *ary = [self.managedObjectContext executeFetchRequest:fr error:nil];  
  36.   NSLog(@"%d", ary.count);  
  37.    for (Contact *cnt in ary) {  
  38.        //NSLog(@"%@  %@  %@  %@", act.passport, act.password, act.cnt.passport, act.cnt.nickname);  
  39.        if ([cnt.nickname isEqualToString:@"nickname1"]) {  
  40.            NSLog(@"DEL nickname1");  
  41.            [self.managedObjectContext deleteObject:cnt];  
  42.        }  
  43.    }  
  44.      
  45.   [self.managedObjectContext save:nil];  
  46.   // From Account62     NSFetchRequest *fr = [[NSFetchRequest alloc] init];  
  47.    NSEntityDescription *ed = [NSEntityDescription entityForName:@"Account" inManagedObjectContext:self.managedObjectContext];  
  48.    [fr setEntity:ed];  
  49.    NSArray *ary = [self.managedObjectContext executeFetchRequest:fr error:nil];  
  50.    for (Account *act in ary) {  
  51.        NSLog(@"%@  %@  %@  %@", act.passport, act.password, act.cnt.passport, act.cnt.nickname);  
  52.    }  
  53.    // From Contact73     NSFetchRequest *fr = [[NSFetchRequest alloc] init];  
  54.    NSEntityDescription *ed = [NSEntityDescription entityForName:@"Contact" inManagedObjectContext:self.managedObjectContext];  
  55.    [fr setEntity:ed];  
  56.    NSArray *ary = [self.managedObjectContext executeFetchRequest:fr error:nil];  
  57.    for (Contact *cnt in ary) {  
  58.        NSLog(@"%@  %@  %@  %@", cnt.passport, cnt.nickname, cnt.act.passport, cnt.act.password);  

小結(jié):IOS數(shù)據(jù)管理工具CoreData入門之雙向關(guān)系操作的內(nèi)容介紹完了,希望本文對你有所幫助!

責(zé)任編輯:zhaolei 來源: 博客園
相關(guān)推薦

2011-06-14 14:27:02

Core DataCocoa TouchiOS

2012-04-09 09:43:49

云計(jì)算云管理

2010-05-28 14:14:10

ibmdwDBA

2022-05-06 12:04:24

Ansible管理工具

2022-06-28 16:30:26

管理工具Python

2022-07-01 09:17:14

Pythonpoetry工具

2022-08-03 08:02:46

PDM工具Python

2014-06-20 10:03:23

大數(shù)據(jù)管理工具

2011-10-18 10:20:13

Data ExplorSQL AzureSQL Server

2011-08-12 10:38:09

MongoDB

2014-07-15 12:30:39

關(guān)系管開源工具

2009-04-24 21:13:45

服務(wù)器虛擬化Vmware

2012-12-06 11:31:40

虛擬化

2020-09-30 14:05:22

網(wǎng)絡(luò)管理

2020-10-30 11:18:47

網(wǎng)絡(luò)技術(shù)工具

2010-11-16 10:00:59

2023-08-04 00:06:34

2009-10-26 17:29:21

Oracle管理員數(shù)據(jù)庫管理

2010-05-25 18:36:54

MySQL管理工具

2011-04-13 16:21:22

SQL Server管理
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號