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をチェックするメソッドでこれを「If」にする必要があり、完全に一致するオブジェクトが1つ欠けているかどうかをチェックするには、このオブジェクトも取得します。皆さん、ありがとうございました

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 を返します。

2 つのセットが同じ数のメンバーを持ち、一方のセットの各メンバーが他方のセットに存在する場合、2 つのセットの内容は等しくなります。

于 2012-07-10T08:11:49.920 に答える