2012-07-27 36 views
0

我有一張桌子和一個搜索欄。該表是從SQLite數據庫生成的,搜索欄搜索這些對象。我遇到的問題是,當我想知道搜索結果的索引是什麼時,如果我只查看搜索結果數組並與我的數據庫錶行進行比較,則無法解釋重複的條目(http:// stackoverflow.com/questions/11617247/how-can-i-figure-out-what-uitableviewcell-im-clicking-on-during-a-search),然後我實現了一個使用indexesOfObjectsPassingTest(http:// stackoverflow。 COM /問題/ 11674498 /如何-可以-I-確定最索引的-AN-對象在-AN-的NSMutableArray-時-I-搜索-FO)。有沒有一些方法可以存儲傳遞非NSIndexSet測試的對象的索引?

現在的問題是,我得到一個NSIndexSet作爲我的結果。我想能夠查詢這我可以一個NSMutableArray,但我知道這是不可能的,所以我在枚舉IndexSet,這會導致顯着的內存問題,因爲有超過5000個可能的結果。有一個更好的方法嗎?我需要確定哪些項目是搜索結果,然後確定我在表格中查找哪些特定結果。

//when the user searches, this function is called: 
- (void) getGrapeMatches { 
    numSearchGrapes=0; 
    listOfTheGrapeIDs = [[NSMutableArray alloc] init]; 
    for (NSString *str in listOfGrapes) 
    { 
     NSRange titleResultsRange = [str rangeOfString:searchBar.text options:NSCaseInsensitiveSearch]; 
     if (titleResultsRange.length > 0) { 
      [searchResult addObject:str]; 
      numSearchGrapes++; 
     } 
    } 
    BOOL (^test)(id obj, NSUInteger idx, BOOL *stop); 

    test =^(id obj, NSUInteger idx, BOOL *stop) { 

     if ([searchResult containsObject: obj]) { 
      return YES; 
     } 
     return NO; 
    }; 

    //this is the part that takes forever because I have over 5000 items in listOfGrapes 
    NSIndexSet *indexes = [listOfGrapes indexesOfObjectsPassingTest:test]; 
    NSUInteger index=[indexes firstIndex]; 
    while(index != NSNotFound) 
    { 
     NSString *tempString = [NSString stringWithFormat:@"%d",index]; 
     [listOfTheGrapeIDs addObject:tempString]; 
     index=[indexes indexGreaterThanIndex: index]; 
    } 
} 

我靠,有listOfTheGrapeIDs,因爲它是我找出我的表單元格在看以後什麼項目的方式。我只是希望有一個更簡單的方法來做到這一點。讓我知道是否需要更多的代碼來幫助理解這個問題。

+0

不知道我完全理解 - 但不能直接使用SQL查詢返回感興趣的結果嗎?現在你有與你的搜索詞匹配的對象。 – nielsbot 2012-07-27 20:52:09

+1

而不是存儲每個索引的字符串化(?!)版本,爲什麼不只是將'listOfGrapes'過濾爲只有那些通過測試的對象? – 2012-07-27 20:53:22

+0

好了,現在我想知道爲什麼我沒有想到在使用SQL查詢之前。明智而完全明顯的解決方案。謝謝!!! – lemontwist 2012-07-27 20:57:23

回答

1

重新發布的答案:

不知道我完全理解 - 但不能數據庫中使用SQL查詢直接返回所關心的結果嗎?現在你有與你的搜索詞匹配的對象。

相關問題