NSPredicate 'OR' filtrado basado en una NSArray de claves

Considere la siguiente 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];

Soy capaz de filtrar esta matriz para encontrar objetos de diccionario que contienen elllave 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);

Que devuelve adecuadamente:

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

Ahora, deseo filtrar el conjunto de datos para los objetos del diccionario que contienenALGUNA de las claves en un NSArray.

Por ejemplo, usando la matriz:NSArray *keySet = [NSArray arrayWithObjects:@"key1", @"key3", nil]; Quiero crear un predicado que devuelve y matriz dealguna objetos de diccionario que contienen 'clave1'o 'key3' (es decir, en este ejemplo se devolverían todos los objetos del diccionario excepto el tercer objeto, ya que no contiene 'key1'o 'key3').

¿Alguna idea sobre cómo lograría esto? ¿Tendría que usar un predicado compuesto?

Respuestas a la pregunta(3)

Su respuesta a la pregunta