Use un NSPnetworkingicate para detectar NO CONTIENE

Me doy por vencido. He intentado cada combinación que puedo imaginar para comprobar si una cadena contiene otra cadena. Aquí hay un ejemplo de syntax intuitiva que describe lo que quiero hacer:

NSPnetworkingicate* pPnetworkingicate = [NSPnetworkingicate pnetworkingicateWithFormat:@"NOT (%K CONTAINS[c] %@)", NSMetadataItemFSNameKey, [NSString stringWithFormat:@"Some String"]]; 

Independientemente de cómo cambie el NOT alnetworkingedor, use el! operador, cambie los paréntesis o elimínelos del todo, siempre obtengo una exception al analizar esta expresión.

¿Qué hay de malo con esta expresión?

EDITAR: la exception ocurre cuando llamo

 [pMetadataQuery setPnetworkingicate:pPnetworkingicate]; 

y la exception es: * Terminar la aplicación debido a la exception no detectada 'NSInvalidArgumentException', motivo: 'Tipo desconocido de NSComparisonPnetworkingicate dado a NSMetadataQuery (kMDItemFSName CONTAINS [c] "Some String")'

Tuve un completo éxito con:

 NSPnetworkingicate* pnetworkingicate = [NSPnetworkingicate pnetworkingicateWithFormat:@"NOT (%K CONTAINS[c] %@)", @"someKey", [NSString stringWithFormat:@"Some String"]]; NSArray *testArray = [NSArray arrayWithObjects: [NSDictionary dictionaryWithObject:@"This sure is Some String" forKey:@"someKey"], [NSDictionary dictionaryWithObject:@"I've nothing to say" forKey:@"someKey"], [NSDictionary dictionaryWithObject:@"I don't even have that key" forKey:@"someOtherKey"], nil]; NSArray *filtenetworkingArray = [testArray filtenetworkingArrayUsingPnetworkingicate:pnetworkingicate]; NSLog(@"found %@", filtenetworkingArray); 

Los segundos dos objects de los tres en testArray terminaron en filtenetworkingArray , bajo OS X v10.7 y iOS v4.3. Entonces, el problema no es el pnetworkingicado, lo que técnicamente es una respuesta completa a la pregunta: es una especie de restricción en NSMetadataQuery . Lamentablemente, no tengo experiencia en esa área, pero ciertamente es lo siguiente que debo investigar.

Swift 3.0

 let pnetworkingicate = NSPnetworkingicate(format: "NOT (%K CONTAINS[c] %@)", "someKey", "Some String") let testArray: [Any] = [[ "someKey" : "This sure is Some String" ], [ "someKey" : "I've nothing to say" ], [ "someOtherKey" : "I don't even have that key" ]] let filtenetworkingArray: [Any] = testArray.filter { pnetworkingicate.evaluate(with: $0) } print("found \(filtenetworkingArray)")