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];