NSSet intersectsSet实现

时间:2012-07-10 07:39:11

标签: iphone objective-c ios5 xcode4.3

我需要创建一个比较某些NSSet的方法,看看是否所有对象都存在,或者是否缺少对象以及它是哪个对象。 我刚刚在viewDidLoad方法上做了,但我需要一个方法来检查所有的NSSet(有很多)。我没有做得那么好。

- (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中,那么我打印set2。我不明白为什么这不起作用,因为这不会在日志上打印。

如果有人可以帮助我,我需要在一个方法上使用“If”来检查我拥有的所有NSset,并检查是否缺少一个完全匹配的对象,也得到这个对象。 谢谢大家

2 个答案:

答案 0 :(得分:2)

intersectsSet:返回BOOL。这意味着0(假)或1(真)。因此,只要你对set2的计数大于1,该语句永远不会成立。

您正在寻找的方法是intersectSet

答案 1 :(得分:0)

如果我理解正确,您想知道masterSet中的每个对象是否都在set2

您可以使用isEqualToSet:

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

来自文档:
  如果otherSet的内容等于接收集的内容,则返回 YES,否则为NO。

     

如果每组具有相同的数量,则两组具有相同的内容   成员以及如果一个成员中的每个成员都出现在另一个成员中。