Objective c NSMutableArray中NSDictionary存储中的搜索字符串

Objective c NSMutableArray中NSDictionary存储中的搜索字符串,objective-c,xcode,for-loop,nsarray,nsdictionary,Objective C,Xcode,For Loop,Nsarray,Nsdictionary,我正在尝试搜索存储在NSMutableArray for (int k = 0; k < [onlyActiveArr count]; k++) { NSString *localID = [onlyActiveArr objectAtIndex:k]; NSLog(@"%@",localID); int localIndex = [onlyActiveArr indexOfObject:localActiveCallID]; NSLog(@"%d",l

我正在尝试搜索存储在
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);

             }

    }
}
for(int k=0;k<[onlyActiveArr count];k++){
NSString*localID=[onlyActivarr objectAtIndex:k];
NSLog(@“%@”,本地化);
int-localIndex=[OnlyActivarr indexOfObject:localActiveCallID];
NSLog(@“%d”,localIndex);
for(NSDictionary*dict in self.SummaryArr){
NSLog(@“%@,[dict objectForKey:@“ActiveID]”);
if(![[dict objectForKey:@“ActiveID”]IseQualtString:localID]){
NSLog(@“找到了这样一个密钥,例如%@”,本地化);
}
}
}
但是我越来越

NSLog(@“找到这样一个键,例如%@”,localActiveCallID)

当ID仍在
SummaryArr
中时,我正在检查字典中是否不存在从
onlyActivArr
检索的
localID


请告诉我如何解决我的问题。

在处理完整个词典之前,您无法决定是否存在密钥。将布尔变量初始设置为
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);
}

在处理完整个字典之前,您无法决定某个键是否不存在。将布尔变量初始设置为
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);
}

如果您喜欢谓词,那么您可以利用访问字典中不存在的键会生成一个nil值这一事实,并生成一个谓词来过滤掉那些键为nil的字典

如果结果的计数大于零,则密钥位于数组中的某个位置。但它不会告诉你在哪里

一个片段来展示这个想法:

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

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

我不知道性能如何叠加,因此如果数据集很大,您可能需要检查执行时间是否在您的限制范围内。

如果您喜欢谓词,然后,您可以使用这样一个事实:访问字典中不存在的键会生成一个nil值,并生成一个谓词来过滤掉那些键为nil的字典

如果结果的计数大于零,则密钥位于数组中的某个位置。但它不会告诉你在哪里

一个片段来展示这个想法:

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

BOOL found = [[self.SummaryArr filteredArrayUsingPredicate: keyPred] count] > 0;
我不知道性能是如何累积的,因此如果您的数据集很大,您可能需要检查执行时间是否在您的限制范围内