xcode core-data nspredicate

xcode - NSPredicar con Múltiples parámetros



swift 3 nspredicate (3)

Es bastante simple construir dinámicamente el predicado: combine su cadena de formato de predicado con el número deseado de condiciones y cree el NSMutableArray correspondiente con los argumentos. [NSPredicate predicateWithFormat:argumentArray:] hará el resto.

Hola Necesito ayuda con el predicado. El problema es que quiero tener una función que obtenga de la base de datos depende de los múltiples valores que recibe, pero los valores no siempre existen, ¿significa que tengo que crear varios predicados diferentes?

Código debajo

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"brand_id LIKE %@ AND brand_id LIKE %@ AND brand_id LIKE %@ AND brand_id LIKE %@ AND brand_id LIKE %@ AND item_category LIKE %@ AND item_make LIKE %@ AND item_gender LIKE %@ || item_price>%@ || item_price<%@", brand_one, brand_two, brand_three, brand_four, brand_five, categoryString, makeString, genderString,[NSNumber numberWithInt:price_bottom],[NSNumber numberWithInt:price_top]];

brand_one, brand_two y etc. algunas veces existen y otras no.

Y cómo debería ser para item_gender por ejemplo. Vamos si no hay un género especificado que tener ambos.

Lo siento si mi descripción del problema es confusa.

Base en Gobras comenta que se produjo el siguiente código

NSArray *brands = [NSArray arrayWithObjects:brand_one, brand_two, brand_three, brand_four, brand_five, nil]; NSPredicate *predicate_brands = [NSPredicate predicateWithFormat:@"brand_id like %@" argumentArray:brands];

Explicación lógica de lo que debe ser la función de búsqueda

  1. fetchrequest
  2. predicado en solicitud de recuperación

predicado basado en 5 identificadores de marca, identificación de artículo, categoría de artículo, marca de artículo, género de artículo, si alguno de los anteriores está vacío, debe buscar todas las entradas relacionadas, por ejemplo, si la categoría de artículo está vacía debe buscar "Joyas, relojes, etc." pero limitarlo con el resto de las expresiones de predicado.

¿Debo crear, por ejemplo, predicados compuestos para marcas y luego crear otro para la categoría de artículos con los valores "item_category like Jewellery" y "item_category like Watches" y después de eso, ¿cómo los reúno exactamente?


Para aquellos que están interesados ​​en Swift!

let arrPred = [NSPredicate(format: "yourAttribute LIKE %@", toCompareID), NSPredicate(format: "yourAttribute2 LIKE %@", toCompareID2)] //Add as many predicates you want in short make your query let compoundpred:NSPredicate = NSCompoundPredicate(andPredicateWithSubpredicates: arrPred) var arrFiltered = yourArray.filteredArrayUsingPredicate(compoundpred)


Reúna una colección apropiada de predicados individuales en NSCompoundPredicate

como en

NSMutableArray *parr = [NSMutableArray array]; if([brand_one length]) { [parr addObject:[NSPredicate predicateWithFormat:@"brand_id LIKE %@",myBrandId]]; } if([brand_two length]) { // etc } NSPredicate *compoundpred = [NSCompoundPredicate andPredicateWithSubpredicates:parr];

Puede apilar sus predicados con orPredicateWithSubpredicates: y andPredicateWithSubpredicates: y NSCompoundPredicate como un NSPredicate puede combinarse.

Ver https://developer.apple.com/documentation/foundation/nscompoundpredicate