Работает ли поиск с использованием NSPredicate на нескольких языках автоматически?

#objective-c

#objective-c

Вопрос:

Я хочу знать, как работает поиск строки в objective C, когда приложение для iphone должно поддерживать несколько языков.

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

 - (int)showSearchResultForQuery:(NSString *)query
{
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name CONTAINS[cd] %@ ||  address CONTAINS[cd] %@",query, query]; 
    storesFiltered = [[NSMutableArray alloc]initWithArray:[stores filteredArrayUsingPredicate:predicate]];    
    int count = [storesFiltered count];
    if(count > 0)
    {
        // we have some results          
        [resultTable reloadData];        
    }       
    return count;
}
  

Этот фрагмент кода в основном принимает строку запроса и обновляет массив, используемый таблицей с использованием NSPredicate. Я хочу знать, что мне нужно принять во внимание, если эта функция должна принимать несколько языков? Китайский. английский … японский… будет ли эта функция по-прежнему работать?

Спасибо.

Ответ №1:

Единственное, что вам нужно учитывать, это то, что кодировка строк в массиве будет такой же, как кодировка строки запроса.

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

Все остальное будет работать «из коробки».