2011-08-07 51 views
0

目前我編程用的tableView一個應用程序,類似於一個在iPhone聯繫人應用程序。從位於字典中的數組中刪除與搜索詞匹配的所有值(字符串)?

一切正常(的章節中,對顯示的標題右側欄,小區配置...),搜索欄旁邊。我熟悉如何做到這一點(搜索),如果tableView的數據從數組中加載,但我的情況是,它從位於NSDictionary中的數組加載。

的字典看起來像

Key = "A" >> Value = "array = apple, animal, alphabet, abc ..." 
Key = "B" >> Value = "array = bat, ball, banana ..." 

如何刪除與搜索詞匹配的所有字符串(從所有字典的數組)?

感謝很多提前:)

回答

2

那麼你可以做這樣的

NSMutableDictionary *newItems = [NSMutableDictionary dictionary]; 
for (NSString *key in oldItems) { 
    NSMutableArray *newArray = [NSMutableArray array]; 
    for (NSString *item in [oldItems objectForKey:key]) { 
     if ([item rangeOfString:searchTerm].location != NSNotFound) { 
      [newArray addObject:item]; 
     } 
    } 
    if ([newArray count]) { 
     [newItems setObject:newArray forKey:key]; 
    } 
} 
[oldItems release]; 
oldItems = [newItems retain]; 

我不知道這是否是做還是最好的辦法,即使它的速度更快,但不夠讓我知道這是否適合你。

+0

沒有它不:(我需要它用於搜索的tableView我輸入第一個字母,並重新加載的tableview後,我只看到不包含字母串之後,該應用程序崩潰:( –

+0

好你的問題說(我引述)'我如何刪除所有字符串(從所有字典的陣列)與搜索詞匹配?'我明白,搜索你的表後應包含術語,其**不要**包含檢索詞......我缺少什麼?你能不能告訴我在哪裏它崩潰? –

+0

我不知道,我沒有得到一個錯誤日誌......和我真的很抱歉錯誤地提問n個I只保留包含我已經修改了答案,你需要什麼樣的搜索詞 –

1

你想更新與新的陣列排除了該字符串現有的字典?

NSMutableDictionary* excludedDictionary = [NSMutableDictionary dictionaryWithDictionary:existingDictionary]; 

for(id key in [existingDictionary allKeys]) 
{ 
    NSArray* existingArray = [existingDictionary objectForKey:key]; 
    NSPredicate* predicate = [NSPredicate predicateWithFormat:@"self != %@", excludedString]; 
    NSArray* excludedArray = [existingArray filteredArrayUsingPredicate:predicate]; 
    [excludedDictionary setObject:excludedArray forKey:key]; 
} 
existingDictionary = [NSDictionary dictionaryWithDictionary:excludedDictionary]; 

這將取代你與一個沒有在它的字符串現有的字典...

相關問題