我需要创建一个比较某些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,并检查是否缺少一个完全匹配的对象,也得到这个对象。 谢谢大家
答案 0 :(得分:2)
intersectsSet:
返回BOOL
。这意味着0(假)或1(真)。因此,只要你对set2的计数大于1,该语句永远不会成立。
您正在寻找的方法是intersectSet:
答案 1 :(得分:0)
如果我理解正确,您想知道masterSet
中的每个对象是否都在set2
。
您可以使用isEqualToSet:
if ([masterSet isEqualToSet:set2]) {
NSLog(@"set2: %@", set2);
}
来自文档:
如果otherSet的内容等于接收集的内容,则返回 YES,否则为NO。如果每组具有相同的数量,则两组具有相同的内容 成员以及如果一个成员中的每个成员都出现在另一个成员中。