0

NSSetにある要素を除外してNSArrayをフィルタリングしようとしています。私はこのようなことをしています:

    NSMutableArray* a = [NSMutableArray arrayWithObjects:@"1", @"2", @"3", nil];
    NSSet* set = [NSSet setWithObjects:@"2", nil];
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"NONE SELF IN %@", set];
    NSArray* b = [a filteredArrayUsingPredicate:predicate];

ただし、このコードは例外をスローします。

キャッチされなかった例外によるアプリの終了'NSInvalidArgumentException'、理由:'ALLまたはANY演算子の左側は、NSArrayまたはNSSetのいずれかである必要があります

私が間違っているのは何ですか?

4

1 に答える 1

3

述語のNOT代わりに使用する必要があります:NONE

[NSPredicate predicateWithFormat:@"NOT SELF IN %@", set]

これは、述語がSELF配列内の各オブジェクト()、つまり。に適用されるためですNSString。逆に、のNoneに適用する必要がNSArrayありNSSetます。

を使用することを主張する場合NONE。あなたはに変更aすることができます

NSMutableArray* a = [NSMutableArray arrayWithObjects:@[@"1"], @[@"2"], @[@"3"], nil];

SELFになるようにNSArray

于 2012-10-20T06:10:27.400 に答える