2013-06-13 21 views
2

我想搜索存儲在NSMutableArray搜索字符串中的NSDictionary店的NSMutableArray

for (int k = 0; k < [onlyActiveArr count]; k++) { 

    NSString *localID = [onlyActiveArr objectAtIndex:k]; 
    NSLog(@"%@",localID); 

    int localIndex = [onlyActiveArr indexOfObject:localActiveCallID]; 
    NSLog(@"%d",localIndex); 

    for (NSDictionary *dict in self.SummaryArr) { 

     NSLog(@"%@",[dict objectForKey:@"ActiveID"]); 

      if (![[dict objectForKey:@"ActiveID"] isEqualToString:localID]) { 
        NSLog(@"found such a key, e.g. %@",localID); 

      } 

    } 
} 

NSDictionary一個字符串,但我越來越

NSLog(@"found such a key, e.g. %@",localActiveCallID);

當ID仍然存在於SummaryArr ,我正在檢查從onlyActiveArr檢索到的localID是否不存在於字典中。

請建議我如何克服我的問題。

回答

4

在完成處理整個字典之前,您無法決定密鑰是否存在。做一個布爾變量初始設置爲NO,並將其更改爲YES,如果你在字典中找到一個項目,像這樣:

BOOL found = NO; 
for (NSDictionary *dict in self.SummaryArr) { 
    NSLog(@"%@",[dict objectForKey:@"ActiveID"]); 
    found = [[dict objectForKey:@"ActiveID"] isEqualToString:localID]; 
    if (found) break; 
} 
if (!found) { 
    NSLog(@"found such a key, e.g. %@",localID); 
} 
0

如果你喜歡謂詞,那麼你可以使用在訪問中不存在的關鍵事實一個字典會產生一個無值的值,並作出一個謂詞來過濾出那些對你的密鑰爲零的字典。

如果結果的計數大於零,那麼您的密鑰在數組中的某個位置。但它不會告訴你在哪裏。

一個片段,顯示的想法:

NSPredicate *keyPred = [NSPredicate predicateWithFormat: @"NOT ActiveID == nil"];     

BOOL found = [[self.SummaryArr filteredArrayUsingPredicate: keyPred] count] > 0; 

我不知道性能如何堆疊起來,因此,如果您的數據集很大可能要檢查的執行時間是你的限度內。