ios - example - uisearchbar swift 4
NSPredicate: no se puede analizar la cadena de formato (3)
Esta pregunta ya tiene una respuesta aquí:
Estoy intentando escribir un NSPredicate para obtener filas con el valor de my_column con esta cadena " 193e00a75148b4006a451452c618ccec " y obtengo el siguiente 193e00a75148b4006a451452c618ccec .
Aplicación finalizada debido a la excepción no detectada ''NSInvalidArgumentException'', motivo: ''No se puede analizar la cadena de formato "my_column = 193e00a75148b4006a451452c618ccec"''
Mi declaración de predicado
fetchRequest.predicate=[NSPredicate predicateWithFormat:[NSString stringWithFormat:@"%@==/"%@/"",attributeName,itemValue]];
También probé esto
fetchRequest.predicate=[NSPredicate predicateWithFormat:[NSString stringWithFormat:@"%@ == %@",attributeName,itemValue]];
esta
fetchRequest.predicate=[NSPredicate predicateWithFormat:[NSString stringWithFormat:@"%@ = %@",attributeName,itemValue]];
y esto
fetchRequest.predicate=[NSPredicate predicateWithFormat:[NSString stringWithFormat:@"%@=/"%@/"",attributeName,itemValue]];
Por favor ayuda.
Me enteré de esto, cuando estaba tratando con la respuesta de Martin R
fetchRequest.predicate=[NSPredicate predicateWithFormat:@"%@==%@",attributeName,itemValue];
El atributo nombre que paso viene con un '''', así que me quité el nombre de atributo y lo codifiqué, luego funciona bien.
Creo que te has perdido '''' al verificar la igualdad,
ahora intenta,
[NSPredicate predicateWithFormat:@"my_column=''193e00a75148b4006a451452c618ccec''"];
Encierre la cadena en comillas simples:
[NSPredicate predicateWithFormat:@"my_column = ''193e00a75148b4006a451452c618ccec''"]
o mejor , usa sustitución de argumentos:
[NSPredicate predicateWithFormat:@"my_column = %@", @"193e00a75148b4006a451452c618ccec"]
El segundo método evita problemas si la cadena de búsqueda contiene caracteres especiales como '' o " .
Observación: nunca use stringWithFormat al crear predicados. stringWithFormat y predicateWithFormat manejan el formato %K y %@ diferente, por lo que la combinación de estos dos métodos es muy propensa a errores (e innecesaria).
Tratar
//Case Insensitive
fetchRequest.predicate=[NSPredicate predicateWithFormat:@"%K = [cd] %@",attributeName,itemValue];
//Case sensitive
fetchRequest.predicate=[NSPredicate predicateWithFormat:@"%K = %@",attributeName,itemValue];