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;
我不知道性能是如何累积的,因此如果您的数据集很大,您可能需要检查执行时间是否在您的限制范围内