2015-05-16 4 views
-1

У меня есть NSMutableArray, который заполняет NSTableView. Он содержит строки: dog, cat, duck, cow, moose, nil. У меня есть панель поиска над моим NSTableView и хотел бы выбрать элемент в представлении таблицы, который имеет самое близкое соответствие к строке, которую я искал (в строке поиска). Есть ли простой способ сделать это?Поиск в NSMutableArray

+0

Не уверен, но разве это автозаполнение вопроса? http://www.raywenderlich.com/336/auto-complete-tutorial-for-ios-how-to-auto-complete-with-custom-values ​​ – gro

+0

Первый шаг: Определите, что самое близкое совпадение. Например, что ближе всего к «z»? Ближайшие совпадения к «dowk»? – gnasher729

ответ

1

Вы можете рассчитать меру расстояния между строкой поиска и строками в таблице. Затем выберите элемент с наименьшим значением расстояния.

Одним из способов расчета дистанционной меры является использование Алгоритма расстояний Левенштейна. Реализация может быть найдена here. Это работает в моем случае.

Можно также искать для частичного совпадения:

if ([titleWord rangeOfString:searchWord options:NSCaseInsensitiveSearch].length > 0) 

Или, если вы хотите, чтобы найти слова, которые начинаются в строку поиска:

if ([titleWord.lowercaseString hasPrefix:searchWord.lowercaseString]) 
+0

Как получить индекс строки, ближайшего к 'searchWord'? – Mark

+0

Как только вы определили строку в таблице, которая соответствует вашему поисковому слову, вы можете использовать метод 'indexOfObject' вашего NSMutableArray. – vomako

+0

Я помещаю это, если в виде цикла for? как получить титул? – Mark