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?