verbo tipos sujeto subrayado predicados predicado partes oraciones oracion nucleo inglés ingles español ejemplos con como clases iphone core-data

iphone - tipos - ¿Qué significa No se puede generar SQL para el predicado(_STRING PREDICATE_)(problema en RHS)?



sujeto y predicado (2)

Estoy tratando de desarrollar una aplicación para iPhone usando Core Data y estoy usando un predicado muy básico para agarrar objetos. (es decir, nombre_atributo == cadena)

He comprobado el modelo para asegurarme de que los nombres de los atributos sean correctos y sé por esta pregunta SO que RHS significa "Lado Derecho", lo que me lleva a la parte de "cadena". Estoy creando la cadena de formato usando

NSString *predicateString = [NSString stringWithFormat:@"attribute_name==%@", string];

Entonces para ir a buscar, estoy usando esto:

NSEntityDescription *entityDescription = [NSEntityDescription entityForName:_entityName inManagedObjectContext:managedObjectContext]; NSFetchRequest *request = [[[NSFetchRequest alloc] init] autorelease]; [request setEntity:entityDescription]; NSPredicate *predicate = [NSPredicate predicateWithFormat:predicateString]; [request setPredicate:predicate]; NSError *error = nil; NSArray *array = [managedObjectContext executeFetchRequest:request error:&error];

¿Qué me estoy perdiendo? ¿Qué podría causar este error?

Gracias.


Estás haciendo esto mal. No debes crear una cadena de formato.

Supongo (basado en tu reacción a la respuesta de @Brent) que estás haciendo algo como esto:

NSString *predicateString = [NSString stringWithFormat:@"foo == /"%@/"", bar]; NSPredicate *p = [NSPredicate predicateWithFormat:predicateString];

No hagas eso

Haga esto en su lugar:

NSPredicate *p = [NSPredicate predicateWithFormat:@"foo == %@", bar];

La primera fallará si la bar contiene un carácter " . La segunda no lo hará.


NSString stringWithFormat: citar la cadena si realmente desea usar el mensaje NSString stringWithFormat: o puede usar el mensaje NSPredicate predicateWithFormat: con el formato y los argumentos porque "hará lo correcto" con el rhs en su situación (sugeriría que utiliza el método NSPredicate sin las comillas)

NSString *predicateString = [NSString stringWithFormat:@"attribute_name==/"%@/"", string];