Как выполнить регистр и диакритический нечувствительный фильтр массива NSDictionaries (не NSString)? - PullRequest
1 голос
/ 05 февраля 2010

У меня есть массив словарей. Я хотел бы отфильтровать этот массив, посмотрев, содержит ли поле @ "name" в каждом словаре заданную строку.

Проблема в том, что я хотел бы сделать свою фильтрацию нечувствительной к регистру и диакритическим знакам.

Если бы массив содержал только строки, я мог бы легко использовать NSPredicate. Однако это не так, и я не вижу способа, которым NSPredicate мог бы приспособиться к этой ситуации.

Если бы я заботился только о нечувствительности к регистру, я мог бы просмотреть все элементы и сравнить строку фильтра в нижнем регистре с именем в нижнем регистре. Но я не знаю подобного трюка для диакритиков.

Есть ли где-нибудь хорошее решение?

Ответы [ 2 ]

4 голосов
/ 05 февраля 2010

Проверьте топ ответ на этот вопрос:

Не американские символы в заголовках разделов для UITableView

Вы должны быть в состоянии использовать этот код, чтобы избавиться от диакритических знаков, а затем выполнять сравнение или поиск без учета регистра.

3 голосов
/ 05 февраля 2010

Как насчет чего-то вроде:

NSArray * array = .....
NSString * searchString = @"foo";
NSArray * filteredArray = [array filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"name contains[cd] %@", searchString]];
...