В моей текущей реализации UISearchBarController
я использую [NSString compare:]
внутри метода делегата filterContentForSearchText:scope:
, чтобы возвращать релевантные объекты на основе их свойства name в результаты UITableView
, когда вы начинаете печатать.
Пока что это прекрасно работает на английском и корейском языках, но я хотел бы иметь возможность выполнять поиск в определенных символьных кластерах NSString
. Это применимо только для нескольких языков, одним из которых является корейский.
На английском языке compare:
возвращает новые результаты после каждой введенной вами буквы, но на корейском языке результаты генерируются после завершения распознавания кластера графем. Я хотел бы иметь возможность искать в своем имени свойства корейских объектов через отдельные элементы, которые составляют слог.
Может кто-нибудь пролить свет на то, как к этому подойти? Я уверен, что это как-то связано с поиском символов UTF16 вручную или с использованием класса более низкого уровня.
Ура!
Вот конкретный пример, который просто не работает:
`NSString *string1 = @"이";
`NSString *string2 = @"ㅣ";
NSRange resultRange = [[string1 decomposedStringWithCanonicalMapping] rangeOfString: [string2 decomposedStringWithCanonicalMapping] options:(NSLiteralSearch)];
Результат всегда NSNotFound, с decomposedStringWithCanonicalMapping
или без него.
Есть идеи?