NSPredicate with localizedCaseInsensitiveCompare - PullRequest
0 голосов
/ 05 октября 2011

У меня есть приложение с CoreData, и мне нужно использовать NSPredicate для получения всех контактов из города.

Вопрос в том, что "город" может быть написан как ЛОНДОН, Лондон или даже Лондон. И пользователь будет вводить Лондон для поиска или LoNDon.

Мне нужно использовать NSPredicate с localizedCaseInsensitiveCompare, чтобы получить все записи.

Код:

    request.predicate = [NSPredicate predicateWithFormat:
                         @"activityDeleted == %@ && (SUBQUERY(hasMembers, $sub, $sub.memberDeleted == %@).@count > 0) && (SUBQUERY(hasMembers, $sub, $sub.city == %@)", 
                         [NSNumber numberWithBool:NO], 
                         [NSNumber numberWithBool:NO],
                         city];

Приведенный выше NSPredicate извлекает все группы, в которых есть контакты, а не удаленные, которые находятся в определенном городе, но у меня проблема CaseInsensitive ...

Как я могу это сделать?

Спасибо

RL

Ответы [ 2 ]

1 голос
/ 05 октября 2011

Здесь вам не нужен подзапрос. Вместо этого весь ваш предикат может быть:

@"activityDeleted == NO AND ANY hasMembers.memberDeleted = NO AND ANY hasMembers.city =[cd] %@", city
1 голос
/ 05 октября 2011

Вы можете использовать нечувствительные к регистру и диакритические модификаторы "[cd]" на ==

SUBQUERY(hasMembers, $sub, $sub.city ==[cd] %@)

Вы можете попытаться выполнить поиск в стеке потока для "nspredicate без учета регистра", там уже есть несколько ответов https://stackoverflow.com/search?q=case+insensitive+nspredicate

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...