У меня есть NSMutableArray
, который заполняет NSTableView
. Он содержит строки: dog, cat, duck, cow, moose, nil
. У меня есть панель поиска над моим NSTableView и хотел бы выбрать элемент в представлении таблицы, который имеет самое близкое соответствие к строке, которую я искал (в строке поиска). Есть ли простой способ сделать это?Поиск в NSMutableArray
ответ
Вы можете рассчитать меру расстояния между строкой поиска и строками в таблице. Затем выберите элемент с наименьшим значением расстояния.
Одним из способов расчета дистанционной меры является использование Алгоритма расстояний Левенштейна. Реализация может быть найдена here. Это работает в моем случае.
Можно также искать для частичного совпадения:
if ([titleWord rangeOfString:searchWord options:NSCaseInsensitiveSearch].length > 0)
Или, если вы хотите, чтобы найти слова, которые начинаются в строку поиска:
if ([titleWord.lowercaseString hasPrefix:searchWord.lowercaseString])
Как получить индекс строки, ближайшего к 'searchWord'? – Mark
Как только вы определили строку в таблице, которая соответствует вашему поисковому слову, вы можете использовать метод 'indexOfObject' вашего NSMutableArray. – vomako
Я помещаю это, если в виде цикла for? как получить титул? – Mark
Не уверен, но разве это автозаполнение вопроса? http://www.raywenderlich.com/336/auto-complete-tutorial-for-ios-how-to-auto-complete-with-custom-values – gro
Первый шаг: Определите, что самое близкое совпадение. Например, что ближе всего к «z»? Ближайшие совпадения к «dowk»? – gnasher729