versiones guia espaƱol descargar actualizar objective-c ios nspredicate

objective c - guia - Usando NSPredicate para buscar una matriz con una matriz



qgis manual (2)

Tengo una matriz de objetos Card (NSObjects), cada uno con un campo llamado tags , que es una NSArray de NSStrings.

Luego me gustaría dividir el término de búsqueda del usuario en una matriz llamada keywords de cadenas por componentsSeparatedByString , luego usar NSPredicate para filtrar mi matriz de tarjetas según qué elementos tienen etiquetas que contienen al menos 1 palabra clave en keywords .

Espero que no sea tan complicado! He intentado usar la cláusula NSPredicate IN sin éxito. ¿Cómo debería hacer esto?


No me mates si esto no es exactamente correcto, pero algo como esto funcionará.

NSArray* arrayOfCards = [NSArray array]; NSArray* keywords = [NSArray array]; NSPredicate* containsAKeyword = [NSPredicate predicateWithBlock: ^BOOL(id evaluatedObject, NSDictionary *bindings) { Card* card = (Card*)evaluatedObject; NSArray* tagArray = card.tags; for(NSString* tag in tagArray) { if( [keywords containsObject: tag] ) return YES; } return NO; }]; NSArray* result = [arrayOfCards filteredArrayUsingPredicate: containsAKeyword];


Teniendo en cuenta la array contiene tarjeta de objeto.

NSArray *keyWordsList = [keywords componentSeparatedByString:@","]; [array filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"ANY %K IN %@",@"tags",keyWordsList]]

EDITAR:

Para buscar parcialmente puedes usar el operador LIKE.

[array filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"ANY %K LIKE[cd] %@",@"tags",[partialkeyWord stringByAppendingString:@"*"]]]