NSP Предикатная фильтрация «ИЛИ» на основе NSArray ключей

Рассмотрим следующий 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];

Я могу отфильтровать этот массив, чтобы найти объекты словаря, которые содержатkey 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);

Который соответственно возвращает:

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

Теперь я хочу отфильтровать набор данных для объектов словаря, содержащихANY ключей в NSArray.

Например, используя массив:NSArray *keySet = [NSArray arrayWithObjects:@"key1", @"key3", nil]; Я хочу создать предикат, который возвращает и массивany объекты словаря, которые содержат либо «ключ1»;or  & APOS; ключ3 & APOS; (т.е. в этом примере будут возвращены все объекты словаря, кроме третьего объекта - так как он не содержит ни 'a key;' key1 ';or & APOS; ключ3 & APOS;).

Есть идеи, как мне этого добиться? Должен ли я использовать составной предикат?

Ответы на вопрос(3)

Ваш ответ на вопрос