2012-07-10 65 views
2

我需要做一個方法來比較一些NSSet,看看是否所有的對象都存在,或者它是否缺少一個對象和哪個對象。 我剛剛做了viewDidLoad方法,但我需要一個方法來檢查所有的NSSet(有很多)。我沒有那麼好。NSSet intersectsSet實現

- (void)viewDidLoad 
{ 
     [super viewDidLoad]; 
     NSMutableSet *masterSet = [[NSMutableSet alloc] initWithObjects:@"0", @"1", @"2", @"3", @"4" ,nil]; 
     NSMutableSet *set2 = [[NSMutableSet alloc] initWithObjects:@"0", @"1", @"2", @"3", nil]; 
     NSMutableSet *set3 = [[NSMutableSet alloc] initWithObjects:@"2", @"10", @"12", @"14", @"18", nil]; 

     if ([masterSet intersectsSet:set2] == [set2 count]) { 
      NSLog(@"set2: %@", set2); 
     } 
} 

在這個例子中,我嘗試檢查,如果SET2所有的對象都在masterSet,所以我打印設置2。我不明白爲什麼這不起作用,因爲這不是在日誌上打印。

如果有人能幫助我,我需要這個「如果」上的方法,將檢查所有的NSSet我有,並檢查是否有缺失的一個目的是全場比賽,得到這個對象了。 謝謝大家

回答

2

intersectsSet:返回一個BOOL。這意味着0(假)或1(真)。所以只要你對set2的計數大於1,那聲明永遠不會是真的。

你正在尋找的方法是intersectSet

+0

感謝您的幫助,我從您的鏈接中看到了這些方法,這是我需要的,我會嘗試。如果你對這些方法有任何的解釋可能會很好,如果不是這樣也可以,再次感謝你 – 2012-07-11 13:39:28

0

如果我理解正確你要知道,如果在masterSet每一個對象都在set2

你可以用isEqualToSet:

if ([masterSet isEqualToSet:set2]) { 
    NSLog(@"set2: %@", set2); 
} 

檢查這從文檔:
返回是如果otherSet的內容等於接收集的內容,否則沒有。

如果兩組的成員數相同,並且一組中的每個成員都存在於另一組成員中,則兩組成員的內容相同。

+0

謝謝你的回答,你說的很好,我想我需要將這個方法應用到這種方法之一 - (void)intersectSet :(NSSet *)otherSet - (void)minusSet:(NSSet *)otherSet - (void)unionSet:(NSSet *)otherSet您對這些方法有任何示例。 – 2012-07-11 13:44:42

+0

你確實知道[NSSet中類引用(https://developer.apple.com/library/ios/#documentation/Cocoa/Reference/Foundation/Classes/NSSet_Class/Reference/Reference.html)和[的NSMutableSet類參考](https://developer.apple.com/library/ios/#documentation/Cocoa/Reference/Foundation/Classes/NSMutableSet_Class/Reference/NSMutableSet.html#//apple_ref/occ/cl/NSMutableSet)?你會發現你要求的所有方法。 – Pfitz 2012-07-11 13:47:36

+0

是的,我知道,謝謝,我只是想要一個例子,不存在,但沒關係。謝謝 – 2012-07-12 06:27:38