2010-02-03 173 views
0

我有我需要編寫搜索機制的UIPicker。提供此選取器的數據是一串字符串。當用戶輸入搜索字符串時(我有一個處理該字符串的UISearchBar)。我想查找包含搜索項的所有字符串。從下面的例子看來,我需要編寫一個謂詞,然後過濾數組。我現在遇到的問題是我不知道如何向用戶顯示搜索結果。我嘗試將結果集分配回原始數組,但這不正確。有人可能會提出一種實現用代碼示例搜索UIPicker的技術嗎?iPhone SDK:如何在UIPicker中實現搜索?

NSMutableArray* names = [NSMutableArray arrayWithObjects:@"Andy", @"Bart", @"Bob", nil]; 
NSPredicate* predicate = [NSPredicate predicateWithFormat:@"SELF beginswith[c] 'b'"]; 
NSArray* namesStartingWithB = [names filteredArrayUsingPredicate: predicate]; 

在此先感謝。

回答

0

這裏的工作project

記住你的謂詞是區分大小寫的。您使用了小寫字母b,因此它不會返回任何結果。我的解決方案基本上是喬建議的一樣的東西。我使用兩個數組。一個數組用於整個數據集,然後是另一個數組用於搜索結果。拾取器的數據源是部分數組,然後我在搜索時重新加載拾取器。

+0

謝謝你的例子,我不得不稍微修改它,因爲我使用的是NSMutableArray \t NSPredicate * predicate = [NSPredicate predicateWithFormat:@ 「SELF beginswith並[c] 'B'」]; \t [arrayCountryChoices filterUsingPredicate:謂詞]; \t [pickerCountry reloadComponent:0]; \t 這工作正常我唯一曲。 estion是如何在過濾器後恢復原始數據集? – user265550 2010-02-04 15:50:06

+0

在我的示例中,數據是原始數據集,searchResults是已過濾的數據集。恢復原來我會這樣做:self.searchResults = [NSArray arrayWithArray:data]; – 2010-02-04 16:02:45

0

這絕不是一個超級創造性的解決方案,但如何將結果存儲爲一個sperate數組(即searchResultsArr)並將數據源更改爲該數據源?在代碼中,只需使用searchResultsArr,除非它爲零。如果它沒有使用整個陣列。

請確保調用

[picker reloadAllComponents]; 

當你切換出來

+0

我試圖編碼你建議的內容,它不能按預期工作。你有沒有工作代碼的例子?如上所述「我現在遇到的問題是我不知道如何將搜索結果顯示給用戶,我試圖將結果集分配回原始數組,但這是不正確的。將搜索結果數組分配給UIPicker的數據源,聲明如下:NSMutableArray * arrayCountryChoices; – user265550 2010-02-03 19:48:17