NSPredicate. Невозможно проанализировать строку формата. - программирование
Подтвердить что ты не робот

NSPredicate. Невозможно проанализировать строку формата.

Я пытаюсь написать NSPredicate для извлечения строк с помощью значения my_column с помощью этой строки "193e00a75148b4006a451452c618ccec", и я получаю следующий сбой.

Завершение приложения из-за неперехваченного исключения "NSInvalidArgumentException", причина: "Невозможно проанализировать формат строка" my_column = 193e00a75148b4006a451452c618ccec" '

My predicate statement

fetchRequest.predicate=[NSPredicate predicateWithFormat:[NSString stringWithFormat:@"%@==\"%@\"",attributeName,itemValue]];

также попробовал это

fetchRequest.predicate=[NSPredicate predicateWithFormat:[NSString stringWithFormat:@"%@ == %@",attributeName,itemValue]];

это

fetchRequest.predicate=[NSPredicate predicateWithFormat:[NSString stringWithFormat:@"%@ = %@",attributeName,itemValue]];

и этот

fetchRequest.predicate=[NSPredicate predicateWithFormat:[NSString stringWithFormat:@"%@=\"%@\"",attributeName,itemValue]];

Пожалуйста, помогите.

Я узнал об этом, когда пытался с ответом Martin R

fetchRequest.predicate=[NSPredicate predicateWithFormat:@"%@==%@",attributeName,itemValue];

attributeName я pass поставляется с '', поэтому я снял атрибутName и закодировал его, тогда он отлично работает.

4b9b3361

Ответ 1

Вставьте строку в одинарные кавычки:

[NSPredicate predicateWithFormat:@"my_column = '193e00a75148b4006a451452c618ccec'"]

или лучше, используйте замену аргументов:

[NSPredicate predicateWithFormat:@"my_column = %@", @"193e00a75148b4006a451452c618ccec"]

Второй метод позволяет избежать проблем, если строка поиска содержит специальные символы таких как ' или ".

Примечание. Никогда не используйте stringWithFormat при построении предикатов. stringWithFormat и predicateWithFormat обрабатывать формат %K и %@ по-разному, поэтому объединение этих два метода очень подвержены ошибкам (и не нужны).

Ответ 2

Я думаю, что вы пропустили '' при проверке равенства,

теперь попробуйте,

[NSPredicate predicateWithFormat:@"my_column='193e00a75148b4006a451452c618ccec'"];

Ответ 3

Попробуйте

//Case Insensitive
fetchRequest.predicate=[NSPredicate predicateWithFormat:@"%K = [cd] %@",attributeName,itemValue];

//Case sensitive
fetchRequest.predicate=[NSPredicate predicateWithFormat:@"%K = %@",attributeName,itemValue];