2015-05-16 36 views
-1

我有一個NSMutableArray,它填充了一個NSTableView。它包含字符串:dog, cat, duck, cow, moose, nil。我在NSTableView上方有一個搜索欄,並希望在tableview中選擇與我搜索的字符串(在搜索欄中)最接近的項目。有沒有簡單的方法來做到這一點?在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

您可以計算搜索字符串與表格中字符串之間的距離度量值。然後選取距離值最小的元素。

計算距離度量的一種方法是使用Levenshtein距離算法。一個實現可以被發現here。它適用於我的情況。

也可以搜索部分匹配:

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

或者,如果你想找到開始作爲搜索字符串的話:

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

我如何得到最接近'searchWord'的字符串的索引? – Mark

+0

一旦你的表格中的字符串與你的搜索詞匹配得最好,你可以使用你的NSMutableArray的indexOfObject方法。 – vomako

+0

我把這個如果變成像for循環?我如何獲得titleword? – Mark