NSPredicate 'OR' Filterung basierend auf einem NSArray von Schlüsseln

Betrachten Sie das folgende NSArray:

NSArray *dataSet = [[NSArray alloc] initWithObjects:
                 [NSDictionary dictionaryWithObjectsAndKeys:@"abc", @"key1", @"def", @"key2", @"hij", @"key3", nil], 
                 [NSDictionary dictionaryWithObjectsAndKeys:@"klm", @"key1", @"nop", @"key2", nil], 
                 [NSDictionary dictionaryWithObjectsAndKeys:@"qrs", @"key2", @"tuv", @"key4", nil], 
                 [NSDictionary dictionaryWithObjectsAndKeys:@"wxy", @"key3", nil], 
                 nil];

Ich bin in der Lage, dieses Array zu filtern, um Wörterbuchobjekte zu finden, die das enthaltenSchlüssel key1

// Filter our dataSet to only contain dictionary objects with a key of 'key1'
NSString *key = @"key1";
NSPredicate *key1Predicate = [NSPredicate predicateWithFormat:@"%@ IN self.@allKeys", key];
NSArray *filteretSet1 = [dataSet filteredArrayUsingPredicate:key1Predicate];
NSLog(@"filteretSet1: %@",filteretSet1);

Was entsprechend zurückgibt:

filteretSet1: (
        {
        key1 = abc;
        key2 = def;
        key3 = hij;
    },
        {
        key1 = klm;
        key2 = nop;
    }
)

Jetzt möchte ich den Datensatz nach Dictionary-Objekten filtern, die Folgendes enthaltenIRGENDEIN der Schlüssel in einem NSArray.

Zum Beispiel mit dem Array:NSArray *keySet = [NSArray arrayWithObjects:@"key1", @"key3", nil]; Ich möchte ein Prädikat erstellen, das zurückgibt und ein Array vonirgendein Wörterbuchobjekte, die entweder 'key1' enthaltenoder 'key3' (dh in diesem Beispiel werden alle Dictionary-Objekte mit Ausnahme des dritten Objekts zurückgegeben, da es weder 'key1' enthält.oder 'key3').

Irgendwelche Ideen, wie ich das erreichen würde? Müsste ich ein zusammengesetztes Prädikat verwenden?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage