Estoy intentando buscar objetos a partir de datos básicos que no están en un conjunto determinado, pero no he podido hacer que funcionen.obteniendo objetos de datos centrales que no están en un conjunto
Por ejemplo, supongamos que tenemos una entidad de datos central llamada Usuario, que tiene algunos atributos como userName, familyName, givenName y active. Dada una matriz de cadenas que representan un conjunto de nombres de usuario, podemos ir a buscar fácilmente todos los usuarios correspondientes a esa lista de nombres de usuario:
NSManagedObjectContext *moc = [[NSManagedObjectContext alloc] init];
NSFetchRequest *request = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"User"
inManagedObjectContext:moc];
[request setEntity:entity];
NSArray *userNames = [NSArray arrayWithObjects:@"user1", @"user2", @"user3", nil];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"userName IN %@", userNames];
[request setPredicate:predicate];
NSArray *users = [moc executeFetchRequest:request error:nil];
Sin embargo, quiero ir a buscar el complemento de ese conjunto, es decir, quiero que todo el usuarios en datos centrales que no tienen los nombres de usuario especificados en la matriz userNames. ¿Alguien tiene una idea de cómo abordar este problema? Pensé que sería bastante simple agregar un "NOT"
en el predicado (i.e., "userName NOT IN %@")
, pero Xcode arroja una excepción diciendo que el formato de predicado no pudo ser analizado. También intenté usar el generador de predicados disponible para las solicitudes de recuperación sin suerte. La documentación tampoco fue particularmente útil. Sugerencias? ¿Comentarios? Gracias por toda su ayuda :)
Bastante simple ... Gracias, slev. – tomas
fantástico. Pensé que no estaba funcionando. pero eso fue porque los datos en mi matriz eran de otro campo. Gracias. Simple y efectivo. –
Nota: Esto no funciona con las variables NSNumber, que probablemente tenga sentido, pero es una pena si envuelve una enumeración en un NSNumber. En ese caso, use algo como '[NSPredicate predicateWithFormat: @" NOT (enumWrapper IN {% d,% d}) ", enum1, enum2]'. –