2

我需要创建一个方法来比较一些 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。我不明白为什么这不起作用,因为这没有在日志上打印。

如果有人可以帮助我,我需要在一个方法上创建这个“如果”,该方法将检查我拥有的所有 NSset,并检查是否缺少一个完全匹配的对象,也获取这个对象。谢谢你们

4

2 回答 2

2

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

您正在寻找的方法是intersectSet

于 2012-07-10T08:04:09.687 回答
0

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

你可以检查这个isEqualToSet:

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

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

如果两个集合都具有相同数量的成员并且如果一个集合的每个成员都存在于另一个集合中,则它们具有相同的内容。

于 2012-07-10T08:11:49.920 回答