core-data ios nspredicate

core data - Datos principales: NSPredicar para la relación de muchos a muchos.("Clave to-many no permitida aquí")



nsfetchrequest swift 4 (2)

Está intentando comparar una colección ( categories.name ) con un valor escalar ( category.name ). Necesita usar un comparador de colecciones ( CONTAINS ) o usar un modificador de predicados ( ANY / ALL / SOME , etc.).

Intenta usar:

[NSPredicate predicateWithFormat:@"ANY categories.name =[cd] %@", category.name];

O:

[NSPredicate predicateWithFormat:@"categories.name CONTAINS[cd] %@", category.name];

Tengo dos entidades llamadas "Categoría" y "Artículo" que tienen una relación de muchos a muchos. Quiero formar un predicado que busque todos los artículos donde categoría.nombre sea igual a algún valor. Tengo lo siguiente:

NSEntityDescription *entityArticle = [NSEntityDescription entityForName:@"Article" inManagedObjectContext:managedObjectContext]; NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"title" ascending:YES]; NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil]; NSPredicate *predicate = [NSPredicate predicateWithFormat:@"categories.name == [cd] %@", category.name]; [request setSortDescriptors:sortDescriptors]; [request setEntity:entityArticle]; [request setPredicate:predicate]; NSMutableArray *results = [[managedObjectContext executeFetchRequest:request error:nil] mutableCopy]; if ([results count] > 0) NSLog(@"Results found."); else NSLog(@"NO results found."); [request release]; [sortDescriptor release]; [sortDescriptors release];

El error que recibo es *** Terminating app due to uncaught exception ''NSInvalidArgumentException'', reason: ''to-many key not allowed here''

¿Hay alguna opción para recuperar los datos deseados?


SWIFT SYNTAX

En caso de que alguien ocurra en este escrito tan rápido como lo hice ...

let predicate = NSPredicate(format: "ANY categories.name = %@", category.name!) fetchRequest.predicate = predicate

trabajó para mi.