2013-01-19 113 views
0

我有一個基於搜索欄進行過濾的表格視圖。只要搜索以與單元格文本相同的字符開始,就可以很好地工作。UISearchBar搜索整個UITableView單元格

我希望能夠搜索細胞文本的任何部分,即使在中間。例如。如果單元格文本是「Jon Bon Jovi」,如果用戶在搜索欄中輸入「Bon Jovi」或甚至僅輸入「Jovi」,我希望它仍然出現。

我當前的代碼如下:

for (NSDictionary *item in listItems) 
{ 

    if ([scope isEqualToString:@"All"] || [[item objectForKey:@"type"] 
    isEqualToString:scope] || scope == nil) 
    { 
     NSComparisonResult result = [[item objectForKey:@"name"] 
     compare:searchText options:(NSCaseInsensitiveSearch|NSDiacriticInsensitiveSearch) 
     range:NSMakeRange(0, [searchText length])]; 

     if (result == NSOrderedSame) 
     { 
      [filteredListItems addObject:item]; 
     } 
    } 
} 

任何幫助將是真棒。謝謝你們!

回答

3

而不是使用-compare:options:range:(它只是相對於您的項目的名稱排序您的搜索字符串),考慮看看-rangeOfString:options: - 這將實際上搜索整個項目名稱爲您的搜索字符串。你會喜歡的東西取代你if聲明的內體:

NSStringCompareOptions opts = (NSCaseInsensitiveSearch|NSDiacriticInsensitiveSearch); 
NSRange resultRange = [[item objectForKey:@"name"] rangeOfString:searchText 
                 options:opts]; 
if (resultRange.location != NSNotFound) { 
    [filteredListItems addObject:item]; 
} 
+0

你認真岩石...(3分鐘,直到我能接受) – Brandon

+0

感謝您的客氣話:) – Tim

+0

嗨@tim,我剛打開一個關於在搜索tableview單元格時忽略特殊字符(撇號,破折號等)的相關問題。有鏈接是http://stackoverflow.com/questions/14419955/uisearchbar-that-ignores-special-characters-when-searching-uitableview-cell。如果你有任何想法這將是真棒:)。再次感謝您對這篇文章的幫助! – Brandon

相關問題