Строка NSPredicate OR и целочисленный поиск

Я пытаюсь использовать этот предикат для фильтрации пользовательской модели. Однако, когда я добавляю целое число в формат, фильтр для строки больше не работает. Кроме того, работает только один из двух целочисленных фильтров («групповой» фильтр работает, а «нет» — нет).

NSPredicate *predicateTemplate = [NSPredicate  predicateWithFormat:@"first_name CONTAINS[cd] %@ OR last_name CONTAINS[cd] %@ OR nickname CONTAINS[cd] %@ OR no = %i OR group == %i", searchText, searchText, searchText, value, value];

Модель:

@property NSString *first_name;
@property NSString *last_name;
@property NSString *nickname;
@property NSInteger no;
@property NSInteger group;

Массив содержит несколько объектов с указанным выше свойством, и я фильтрую массив следующим образом:

_searchResults = [anArray filteredArrayUsingPredicate:predicateTemplate]

person harinsa    schedule 14.08.2013    source источник
comment
опубликуйте содержимое массива, который вы пытаетесь отфильтровать   -  person Pratyusha Terli    schedule 14.08.2013
comment
@PratyushaTerli обновил вопрос, не уверен, что понимаю, что вы имели в виду под содержимым массива, вы имеете в виду структуру или реальное содержимое?   -  person harinsa    schedule 14.08.2013
comment
структура словаря в массиве   -  person Pratyusha Terli    schedule 14.08.2013


Ответы (1)


no является зарезервированным словом и будет сравниваться как равное только значениям, равным нулю. Я предлагаю вам изменить имя вашего свойства на что-то более длинное и значимое.

person warrenm    schedule 14.08.2013
comment
В качестве альтернативы вы можете использовать расширение %K в предикате, чтобы избежать таких коллизий: predicateWithFormat:@"%K = %i", @"no", value. - person Martin R; 14.08.2013